Эффект анимации достигается за счет того, что перед взглядом пользователя происходит быстрая смена изображений. Каждый из кадров анимации остается на экране очень небольшой промежуток времени.
Для замера интервалов времени можно использовать компонент таймер. Он расположен на панели System и представлен в виде . Компонент Timer, помещенный на форму, получает имя TimerN, где N — номер 1, 2, 3… (пример 4.8).
Некоторые свойства компонента Timer приведены в таблице (пример 4.9).
Компонент имеет единственный обработчик — OnTimer, в котором описываются действия, происходящие по истечении интервала срабатывания таймера.
Пример 4.10. Создать проект, в котором самолет будет пролетать над городом.
Этапы выполнения задания
- Поместить на форму два компонента Image, компоненты Timer и Button.
- Загрузить изображение города в компонент Image1.
- Написать обработчик события OnCreate для формы, и описать начальное положение самолета, указав координаты верхнего левого угла Image2 за пределами формы. Загрузить в Image2 изображение из файла (файл должен быть размещен в папке ...\Win32\Debug).
- Изменить свойства Caption у компонента Button1 на «Полетели!».
- Установить значение False у свойства таймера Enabled в инспекторе объектов.
- Установить в инспекторе объектов время срабатывания таймера равным 10.
- Написать обработчик события OnClick для компонента Button1, в котором запустить таймер.
- В инспекторе объектов установить прозрачность для компонента Image2 (Transparent = True).
- Написать обработчик события 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;
|
Работающее приложение:
|