Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Как делать анимацию (2D)?   Найти похожие ветки 

 
-virus- ©   (2005-07-19 17:14) [0]

Мастера, подскажите как делать анимацию в Delphi (2D).
Я кое что попробовал, но результатом не доволен.
Может что-то подскажите.

Вот моя попытка-
http://delphigames.ruhelp.com/index.php?act=Attach&type=post&id=37


 
XProger ©   (2005-07-19 17:35) [1]

http://delphimaster.net/view/9-1119771942/

Задавай конкретные вопросы по ссылке бред какой-то


 
-virus- ©   (2005-07-20 09:04) [2]

Исправляюсь:
Допустим, есть рисунок содержащий несколько кадров, показав которые один за одним получаетса анимация, вроде той что у меня на примере.
Вопрос: как отображать необходимый кадр в компоненте TImage?
Или: как отображать необходимую часть рисунка?


 
A22 ©   (2005-07-20 09:26) [3]

BitBlt() умеет копировать частями


 
-virus- ©   (2005-07-20 12:22) [4]

что такое BitBlt и как им пользоватьса?


 
Kobik ©   (2005-07-20 15:20) [5]

По твоей ссылке грузится какой то спам с предложением зарегистрировать бесплатный форум :) Ну, черт с ним с примером.

Вот ИМХО самый простой способ (с чего-то такого я начинал):
1) разрезаешь рисунок по кадрам - каждый кадр в отдельный файл. Называешь их, например k1.bmp, k2.bmp,  ...  ,k10.bmp
2) делаешь массив

my_pic:array[1..10]of tbitmap;

и переменную-тег.

pic_tag:byte;

3) загружаешь туда рисунки

for i:=1 to 10 do
begin
my_pic[i]:=tbitmap.create;
my_pic[i].loadfromfile("k"+inttostr(i));
end;

4) в таймере, или где там у тебя происходит смена кадров

...
inc(pic_tag);
if pic_tag>10 then pic_tag:=1;
image1.canvas.draw(0,0,my_pic[pic_tag]);
...


А всякие BitBlt и т.п. лажа :) когда прокачаешься разберешься...


 
Kobik ©   (2005-07-20 15:22) [6]

очипятка
>my_pic[i].loadfromfile("k"+inttostr(i));
надо
my_pic[i].loadfromfile("k"+inttostr(i)+".bmp");

ну и еще наверно куча ошибок есть :) надеюсь идея ясна.


 
XProger ©   (2005-07-20 15:40) [7]


page.Canvas.CopyRect(Rect(0, 0, 32, 16), bmp.Canvas, Rect(Frame * 32, 0, Frame * 32 + 32, 16);

Это для кадров 32х16 расположенных горизонтально в ряд. Frame - текущий кадр анимации...


 
-virus- ©   (2005-07-20 17:32) [8]

Спасибо всем, буду пробовать.


 
A22 ©   (2005-07-20 19:34) [9]

BitBlt - тот же CopyRect(), только быстрее работать будет. Хоть и не намного


 
Шеф   (2005-07-21 01:37) [10]


> -virus- ©   (19.07.05 17:14)  
> Мастера, подскажите как делать анимацию в Delphi (2D).
> Я кое что попробовал, но результатом не доволен.


О. Коллега ! Я тоже кое что попробовал. http://dcegame.narod.ru/pilots.html И могу сказать, что тормознуто работает, если через Canvas выводить.

Может кто знает, как через 3d ускоритель делать тоже самое ? В смысле делать так, чтобы ненадо было всё координально переделывать. Какие нибудь аналогичные функции типа CopyRect, только в 3D существуют ?


 
A22 ©   (2005-07-21 09:52) [11]

нет, но эти функции можно написать самому


 
Шеф   (2005-07-22 01:28) [12]


> A22 ©   (21.07.05 09:52) [11]
> нет, но эти функции можно написать самому


И даже в OpenGL нету ? Или ты просто не в курсе ?

Кстати, я добавил Коллегу в http://dcegame.narod.ru/pilots.html
И всплывающие подсказки при наведении на предметы.

Теперь думаю, где бы сценарий интересный надыбать.


 
TButton ©   (2005-07-22 08:51) [13]

типа... ПоварДров тебе поможет


 
XProger ©   (2005-07-22 10:37) [14]


ds := 1/Frames;
s  := Frame * ds;
glBegin(GL_QUADS);
glTexCoord2f(s, 0);      glVertex3f(X, Y);
glTexCoord2f(s + ds, 0); glVertex3f(X + 32, Y);
glTexCoord2f(s + ds, 1); glVertex3f(X + 32, Y + 16);
glTexCoord2f(s, 1);      glVertex3f(X, Y + 16);
glEnd;


 
MeF Dei Corvi ©   (2005-07-24 01:17) [15]


> Какие нибудь аналогичные функции типа CopyRect, только в
> 3D существуют ?

если бы и были, то тормозили они так же как и при выводе на канву. Там другие методы. Но, на самом деле, всё очень легко.



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

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
10-1109074082
vecna
2005-02-22 15:08
2005.12.11
TCrystalActiveXReportViewer


14-1132406727
Пока ещё студент
2005-11-19 16:25
2005.12.11
Курсач


14-1132666500
Еремеев Андрей
2005-11-22 16:35
2005.12.11
Нужна консультация продвинутых


3-1130393582
ALexDeep
2005-10-27 10:13
2005.12.11
Как из Delphi получить все базы данных SQL servera


3-1130399776
Slider007
2005-10-27 11:56
2005.12.11
Проблема с подключением к Firebird Imbedded 1.5