Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Как делать анимацию (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.055 c
14-1131958924
Юрий Зотов
2005-11-14 12:02
2005.12.11
Чемпионат сайта по бильярду


14-1132307208
Andersen
2005-11-18 12:46
2005.12.11
Сериал Есенин


9-1121778842
-virus-
2005-07-19 17:14
2005.12.11
Как делать анимацию (2D)?


3-1130232135
Ярослав
2005-10-25 13:22
2005.12.11
Отображение в DBGrid поля типа TimeStamp с миллисекундами


2-1132558051
B@BY
2005-11-21 10:27
2005.12.11
Базы данных - MS Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский