DelphiX: Загрузка и вывод спрайтовИсточник: delphidevelop Борисов Сергей
Итак, научимся загружать и выводить спрайты на экран. Спрайты, проще говоря, это обычные картинки. Например, анимация идущего человека состоит из нескольких кадров, вот каждый кадр это и есть спрайт. Приступим. Для начала выложим на форму все необходимые компоненты: TDXTimer, TDXImageList иTDXDraw. Названия компонентов изменять не будем. TDXTimer - это таймер. Нужен он для того, чтобы экран обновлялся. TDXImageList это коллекция загруженных спрайтов. А на TDXDraw будет вся выводимая графика отображаться. Создайте событие onInitialize у DXDraw1: procedure TForm1.DXDraw1Initialize(Sender: TObject); Теперь создайте событие onFinalize у того же компонента: procedure TForm1.DXDraw1Finalize(Sender: TObject); Теперь необходимо связать между собой DXImageList1 и DXDraw1. Для этого у DXImageList1 свойствоDXDraw устанавливаем в DXDraw1. Дальше реализуем процедуры загрузки спрайтов и их вывода на экран. Procedure TForm1.LoadSprite(Var DXList: TDXImageList; Name: String; Разберемся со входными параметрами процедуры. DXList - указание в какой TDXImageList будет загружаться спрайт. Name - путь к файлу. TransparentIMG - будет ли использоваться прозрачный спрайт. Если да то весь полностью зеленый цвет не будет виден. Далее реализуем загрузку части картинки. Зачем это нужно? Например, существует анимация, но все кадры расположены в одном файле. Каждый следующий кадр правее предыдущего. Т.к. все кадры одного размера, то их можно загрузить в цикле. Это намного удобнее. Procedure TForm1.LoadSpritePos(Var DXList : TDXImageList; Name : String; С загрузкой разобрались, теперь реализуем процедуру вывода: Procedure TForm1.PutImage(DXList : TDXImageList; X, Y, X2, Y2, Index : Integer); Index - номер выводимого спрайта в DXImageList1. Теперь во время инициализации нужно загрузить спрайты. В процедуре DXDraw1Initialize вместо ремарки "тут будут загружаться спрайты" вставим: LoadSprite(DXImageList1, Так как файлов не существует, то будет происходить ошибка. Разместите эти файлы [288 кб] в папке Images. Загрузили. Осталось только вывести. Создайте событие onTimer у DXTimer1: procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); Переменные Xm и Ym нужно объявить глобальными. И создать событие onMouseMove у DXDraw1. Там пишем: Xm:=X; Осталось только настроить разрешение. У компонента DXDraw1 измените свойство Display как вам нужно. Вот и все. Все остальное дело Вашей фантазии. Скачать исходник [295 кб]
|