Главная страница
    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.044 c
6-1077853402
Delpher_Gray
2004-02-27 06:43
2004.05.02
WinSock сервер, события


6-1078419776
Vilux
2004-03-04 20:02
2004.05.02
SMPP


3-1080887851
Belkova
2004-04-02 10:37
2004.05.02
Новый user


1-1082245333
Ivanov
2004-04-18 03:42
2004.05.02
Создание блокнота


3-1081357466
Mishenka
2004-04-07 21:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский