Форум: "Игры";
Текущий архив: 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