Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

DelphiX- Спрайты   Найти похожие ветки 

 
Dmitrich   (2003-11-19 02:50) [0]

Здраствуйте, уважаемые мастера Delphi. При создании игрушки я столкнулся с небольшой проблемкой. Как сделать так чтобы анимированый спрайт прокрутился один раз, после чего уничтожился? Например взрыв.
С уважением Dmitrich.


 
Tanker   (2003-11-19 13:08) [1]

Самый простой способ - рисуешь спрайт который в конце взрывается, а затем уничтожаешь в конце анимации...
Еще проще - отдельный класс взрыв, с трансперентом накладывается на пропорциональный взрыву объект и в конце анимации уничтожается...


 
Dmitrich   (2003-11-19 17:35) [2]

Я создал отдельный класс, но как в коде понять, что анимация закончилась (В спрайте 6- картинок)??? Есть ли функция которая содержит номер прорисованной картинки в DXImageList при анимации. Причём в DXImageList.items у меня одна строчка которая содержит все 6 картинок.


 
Thor ©   (2003-11-19 22:28) [3]


> Dmitrich   (19.11.03 17:35) [2]

чтобы понять какой кадр анимации отрисовывается, если я не ошибаюсь, нужно смотреть свойство картинки AnimPos.


 
Dmitrich   (2003-11-20 05:16) [4]

Значит есть такой класс, как (взрыв):

type
 TVzriv=class(TImageSprite)
 protected
   constructor Create(AParent: TSprite); override;
   destructor Destroy; override;
end;

Есть ещё такой игрок как:

 Tdev=class(TImageSprite)
   Angle:integer;
 protected
   procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
   procedure DoMove(MoveCount: Integer); override;
   procedure DoDraw; override;
   constructor Create(AParent: TSprite); override;
   destructor Destroy; override; // ïðè ñìåðòè
 end;

При нажатии пробел происходит следуещее...

procedure TDev.DoMove(MoveCount: Integer);
...
begin
...
if isButton1 in Form1.DXInput1.States then begin  //(пробел)
  {Чё здесь писать когда спрайт Tvzriv прорисует последнюю   картинку????}
end;
...
end;


 
Thor ©   (2003-11-20 13:49) [5]

Dead.


 
Darthman ©   (2003-11-20 14:26) [6]

"Клиент всегда мертв" (С)

Когда спрайт прорисует последнюю картинку, сделай ему Free() или Destroy().


 
MeF88 ©   (2003-11-20 14:31) [7]


> Здраствуйте, уважаемые мастера Delphi. При создании игрушки
> я столкнулся с небольшой проблемкой. Как сделать так чтобы
> анимированый спрайт прокрутился один раз, после чего уничтожился?
> Например взрыв.
> С уважением Dmitrich.

Ох да не пишите вы на DelphiX. Хотя бы PowerDraw. В идеале DirectX или OpenGL в чистом виде. А вообще нужно Dead.


 
Dmitrich   (2003-11-20 15:52) [8]

Вы не совсем поняли вопрос! Я имею в виду как понять что прорисовался последний кадр? AnimPos=6, чтоли если картинок 6?


 
Ландграф Павел ©   (2003-11-20 16:25) [9]

"Ну и дуб же ты Василий Иваныч"(С)
Тебе же ясно написали, читай AnimPos!!!


 
MeF88 ©   (2003-11-20 17:31) [10]


> "Ну и дуб же ты Василий Иваныч"(С)

И златая цепь на дубе том... Пушкин (C)

> Вы не совсем поняли вопрос! Я имею в виду как понять что
> прорисовался последний кадр? AnimPos=6, чтоли если картинок
> 6?

if AnimPos=AnimCount then Dead;
где AnimPos - текущий кадр, а AnimCount - количество кадров всего. Вообще я не помню есть ли в DelphiX AnimCount - давно его не юзал...


 
Dmitrich   (2003-11-20 17:52) [11]

Хочу задать ещё один очень глупый! Если AnimPos текущий кадр, то почему у него тип Double?

Ну в общем нужно сделать так, чтобы после нажатия пробела создавался объект (Tvzriv), прокручивался до конца и уничтожался!

procedure TDev.DoMove(MoveCount: Integer);
...
begin
...
if isButton1 in Form1.DXInput1.States then begin  //(пробел)
 ...
 Vzriv:=TVzriv.Create(form1.DXSpriteEngine1.Engine);
 ...
end;
 if Vzriv.AnimPos=Vzriv.AnimCount then dead;
...
end;

Я полагаю так! Но оно не работает? Что делаю не так?


 
MeF88 ©   (2003-11-20 18:34) [12]


> Но оно не работает? Что делаю не так?

Полный код в студию!


 
Ландграф Павел ©   (2003-11-20 20:16) [13]

>Хочу задать ещё один очень глупый! Если AnimPos текущий кадр, то почему у него тип Double?
А ты думаешь каким образом они сделали скорость анимации???
Когда кадр будет ровно 2, выведется изображение два, а от 1 до 1.99 будет отрисовываться кадр 1...
Здорово правда?


 
Dmitrich   (2003-11-25 00:06) [14]

Всем огромное мега спасибо!!! Я наконец-то разобрался и дела пошли просто отлично!



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.029 c
14-1081249109
Iddqd
2004-04-06 14:58
2004.05.02
Как попросить шефа о повышении зарплаты?


14-1081629321
gn
2004-04-11 00:35
2004.05.02
ПАРНИ ИСУС ВОСКРЕС!!!!!!!!!!


14-1081513957
Rouse_
2004-04-09 16:32
2004.05.02
Пейджерные перлы. :)))


1-1081915858
alexprozorov
2004-04-14 08:10
2004.05.02
Как узнать какие функции есть в DLL ?


11-1065885048
Revolter
2003-10-11 19:10
2004.05.02
выделение текста в комбобокс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский