Графика в Delphi - примеры задач на построение графиков, а также компоненты для графики

Анимация спрайтов


Все ниже написанное относится к Delphi 5, в более старых версиях возможны отличия, а может и нет, не знаю.

Щас мы будем анимировать спрайт. Он будет состоять из 6 промежуточных фаз.

Я его выдрал из Сеговской игрушки “Asterix & Obelix” (при помощи эмулятора), а Вы, если обладаете талантом, можете его нарисовать, ну или тоже выдрать :).
Должно получиться что-то похожее на это:

Сначала сделаем без использования DXSpriteEngine:
Создадим форму MainForm
На форме создадим
DXDraw, размером где-то 150×150,
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;

Powered WP Ъ скачать delphi, delphi 7, скачать delphi 7, delphi файлы, delphi, компоненты, delphi 2009, delphi программы, delphi бесплатно, delphi скачать, бесплатно работа delphi, delphi создание, delphi строки, программирования delphi, borland delphi, delphi формы