Текущий архив: 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.48 MB
Время: 0.044 c