{{notification.text}}

MirGames

darksega
02.07.12 17:22
0
создаю анимированный спрайт взрыва. после окончания анимации спрайт уничтожается? или так и занимает память, но его не видно на экране? Делаю бомбермэн и в каждой клетке траектории взрывной волны вывожу спрайт.


Tboom2 = class (TImageSprite)
public
constructor Create (AParent: TSprite); override;
destructor Destroy; override;
end;


constructor Tboom2.Create (AParent: TSprite);
begin
inherited Create(AParent);
Image := form1.DXImageList1.Items[7];
Height := Image.Height;
z:=1;
AnimStart:=0;
AnimCount:=22;// <--------------------------
AnimLooped:=false;
AnimSpeed:=500/1000;
end;


Destructor Tboom2.Destroy;
begin
inherited Destroy;
end;


procedure bomb_exp(...);
degin
with TBoom2.Create(DXSpriteEngine1.Engine) do begin
x:=...
y:=...
end;
end;

Timer:
DXDraw1.Surface.Fill(0);
...
DXSpriteEngine1.Dead;
DXSpriteEngine1.Move(1);
DXSpriteEngine1.Draw;


И второй вопрос: почему AnimCount:=22 у меня 21 кадр анимации. если поставить 21 то анимация заканчивается на последней картинке и эта картинка так и висит. в итоге все поле засеряно последним кадром анимации.
если бы я создавал спрайт привязанный к переменной как player1, то уследить за ним можно, а так он
создается непойми чо, ни номера, ни названия.
В примерах с пуле писали при коллизии Fa.dead здесь я не могу проверьть окончание цикла анимации. animpos всегда =0;


Большое спасибо если кто развеет сомнения или поможет про удаление спрайта.
delphiX использую только как тестовый визуализатор. когда движек будет готов проведу оптимизацию
алгоритмов и вообще движка и перепишу на DirectX9.
#1
darksega
02.07.12 18:46
0
Спасибо Dan`у ранее подобный вопрос был. Кому-то помогло. Буду пробовать.
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}