§ 4. Элементы кіравання для работы з графікай

4.4. Анімацыя

Эфект анімацыі дасягаецца за кошт таго, што перад поглядам карыстальніка адбываецца хуткая змена відарысаў. Кожны з кадраў анімацыі застаецца на экране вельмі невялікі прамежак часу.

Для замеру інтэрвалаў часу можна выкарыстоўваць кампанент таймер. Кампанент Timer змешчаны на панэлі System і паказаны ў выглядзе . Кампанент Timer, змешчаны на форму, атрымлівае імя — TimerN, дзе N — нумар 1, 2, 3… (прыклад 4.8).

Некаторыя ўласцівасці кампанента Timer прыведзены ў табліцы (прыклад 4.9).

Кампанент мае адзіны апрацоўшчык —  OnTimer, у якім апісваюцца дзеянні, якія адбываюцца па заканчэнні інтэрвалу спрацоўвання таймера.

Прыклад 4.10. Стварыць праект, у якім самалёт будзе пралятаць над горадам.

Этапы выканання задання

  1. Змясціць на форму два кампаненты Image, кампаненты Timer і Button.
  2. Загрузіць малюнак горада ў кампанент Image1.
  3. Напісаць апрацоўшчык падзеі OnCreate для формы, і апісаць пачатковае становішча самалёта, паказаўшы каардынаты верхняга левага вугла Image2 за межамі формы. Загрузіць у Image2 малюнак з файла (файл павінен быць размешчаны ў папцы ...\Win32\Debug).
  4. Змяніць ўласцівасці Caption у кампанента Button1 на «Паляцелi!».
  5. Устанавіць значэнне False у ўласцівасці таймера Enabled у інспектары аб'ектаў.
  6. Устанавіць у інспектары аб'ектаў час спрацоўвання таймера роўным 10.
  7. Напісаць апрацоўшчык падзеі OnClick для кампанента Button1, у якім запусціць таймер.
  8. У інспектары аб'ектаў устанавіць празрыстасць для кампанента Image2 (Transparent = True).
  9. Напісаць апрацоўшчык падзеі OnTimer, і мяняць у ім значэнне ўласцівасці Left у кампанента Image2. Калі самалёт вылецеў за мяжу, то вярнуць яго ў пачатковае становішча.
Калі пры працы дадатку ўзнікае мігаценне, то неабходна ўстанавіць значэнне True для ўласцівасцяў формы AlphaBlend і DoubleBuffered.

Прыклад 4.8. Кампанент таймер на форме:

Кампанент Timer не бачны пры рабоце дадатку, таму месца яго змяшчэння на форме не мае значэння.

Прыклад 4.9. Некаторыя ўласцівасці кампанента таймер.

Уласцівасць

Прызначэнне

Enabled

Значэнне True абазначае, што таймер запушчаны

Interval

Час у мілісекундах, праз які адбываецца спрацоўванне таймера і выклік апрацоўшчыка OnTimer

Прыклад 4.10. Форма на этапе канструявання:

Апрацоўшчык падзеі OnCreate для формы:

procedure
TForm1.FormCreate(Sender: TObject);
begin


Image2.Picture.LoadFromFile ('plane.bmp');

   x := -Image2.Width;

   y := 20;

   Image2.Left := x;

   Image2.Top := y;

end;

Апрацоўшчык падзеі OnClick для кампанента Button1:

procedure TForm1.Button1Click(Sender: TObject);
begin
   Timer1.Enabled := True;
end;

Апрацоўшчык падзеі OnTimer для кампанента Timer1:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   x := x + 1;
   Image2.Left := x;
   if Image2.Left >
Image1.Width + Image2.Width
then
      x := -Image2.Width;
end;

Дадатак у час работы: