§ 4. Элементы управления для работы с графикой

4.4. Анимация

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

Для замера интервалов времени можно использовать компонент таймер. Он расположен на панели 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 на «Полетели!».
  5. Установить значение False у свойства таймера Enabled в инспекторе объектов.
  6. Установить в инспекторе объектов время срабатывания таймера равным 10.
  7. Написать обработчик события OnClick для компонента Button1, в котором запустить таймер.
  8. В инспекторе объектов установить прозрачность для компонента Image2 (Transparent = True).
  9. Написать обработчик события OnTimer, и менять в нем значение свойства Left у компонента Image2. Если самолет вылетел за границу, то вернуть его в начальное положение.
Если при работе приложения возникает мерцание, то необходимо установить значение Ttrue для свойств формы 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;

Работающее приложение: