![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Анимированный персонаж. [Delphi, Windows]
Zak3D[@Tm] © (2004-06-17 20:51:00)Всем привет.
Вот у меня какая к вам просьба, нет ли у кого небудь маленокого примерчика или так можь кто напишет(но тогда поподробней), как сделать анимированного персонажа. Вот нажал я влево, у меня одна намация проигрывается, нажал вправо, другая, но только без Имадж листов и прочего, а что бы изображения в массивах хранились.
Заранее всем большое пасиба.
OSokin (2004-07-03 17:29:00) [1]Извини, не рассмотрел насчет имеджлистов. Кстати, они сами - компонентное воплощение массивов, состоящих из изображений (если не компонентносмотреть на это, то они типа этого:
type
TImageList:array of TImage
)
OSokin (2004-07-02 17:19:00) [2]Да есть, есть...
Proger (2004-06-26 18:51:00) [3]Мне кажется массив всётаки лучше, imho там все картинки уже
разрезанные и нужного размера.
Zak3D[@Tm] (2004-06-25 22:08:00) [4]Честно сказать не нащёл такого примера (Sample75)
OSokin (2004-06-25 21:00:00) [5]Посмотри на DelphiGFX. Там Sample75.
nexxiss (2004-06-17 22:56:00) [6]>for i:=0 to 2 do im[0,i].LoadFromFile('left'+inttostr(i)+'.bmp');
Так не совсем хорошо будет.
Проще будет, если все картинки персонажа будут на одной БМП, тогда нужный фрагмент вытаскиваешь и выводишь куда надо. Обычный блитинг.
Drinkins (2004-06-17 21:43:00) [7]На твоем месте я бы попробовал что нить типа
т.е хранить битмапы, кадры менять по таймеру, а номера анимаций менять с клавы.
var im: array[0..1,0..2]of TBItmap;
u,t: integer;
procedure TForm1.FormCreate(Sender: TObject);
var i,j: integer;
begin
u:=0;
for i:=0 to 1 do
for j:=0 to 2 do begin
im[i,j]:=TBitmap.Create();
end;
for i:=0 to 2 do im[0,i].LoadFromFile('left'+inttostr(i)+'.bmp');
for i:=0 to 2 do im[1,i].LoadFromFile('right'+inttostr(i)+'.bmp');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(t);
if t>2 then t:=0;
Image1.Canvas.Draw(0,0, im[u,t]);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_LEFT: u:=0;
VK_RIGHT: u:=1;
end;
end;