Анимация спрайтовDelphi , Графика и Игры , DirectX и DelphiX
Оформил: XVeL Щас мы будем анимировать спрайт. Он будет состоять из 6 промежуточных фаз. Должно получиться что-то похожее на это: Сначала сделаем без использования DXSpriteEngine: Создадим форму MainForm На форме создадим DXDraw, размером где-то 150x150, DXImageList и DXTimer Красиво? :), щас будет еще красивее. Теперь в Properties DXImageList'а делаем: DXDraw = DXDraw или как Вы там его обозвали. ВItems добавляем поочередно наши спрайтики в TPictureCollection, для каждого спрайта указывается TransparentColor, в моем случае это $00FFC0C0 (вылез автоматически). Вооот, теперь значицца в DXTimer Properties ставим: ActiveOnly = True Enabled = True Interval = 150, чем больше, значение, тем больше задержка, между выводом картинок. В Events'ах DXTimer'a: OnTimer щелкаем пару раз, создается процедура DXTimerTimer, вставляем туда кусок: const //Это перед Begin n:integer=0; //Это перед Begin if not DXDraw.CanDraw then Exit; //Это понятно DXDraw.Surface.Fill(15); //Делаем поверхность синей (15) DXImageList.Items[n].Draw(DXDraw.Surface,50,50,0); //Здесь выводим спрайт № n на поверхность DXDraw в координаты 50х50 со значением Transparent=0 DXDraw.Flip; //Это переключит поверхности. if n > 5 then inc(n) else n:=0; //Здесь переключим счетчик на следующую картинкуТеперь давим Run и ОПА! Исходник и спрайты можете взять Здесь sampl1.zip (12Kb). А теперь тоже самое, но будем использовать DXSpriteEngine: Все промежуточные фазы хранятся в одном файле: Будем использовать первые 6 кадров. Так как все спрайты объединены в одной картинке, то необходимо сделать следующее: То есть установить ширину и высоту кадра (при чем высота нужна только в случае 2-мерного массива кадров) type TSprite = class(TImageSprite) end; procedure TForm1.FormCreate(Sender: TObject); Var Sprite:TImageSprite; begin Sprite := TSprite.Create(DXSpriteEngine.Engine); with TSprite(Sprite) do begin Image := DXImageList.Items.Find('sprite'); AnimStart:=0; AnimLooped:=true; AnimCount:=6; AnimSpeed:=100/1000; x:=100; y:=100; Z:=0; end; end; procedure TForm1.DXTimerTimer(Sender: TObject; LagCount: Integer); begin DXSpriteEngine.Move(1); DXDraw.Surface.Fill(15); DXSpriteEngine.Draw; DXDraw.Flip; end; Анимация спрайта в Delphi 5 с использованием DXSpriteEngine и без него. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: DirectX и DelphiX ::
|
||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |