Интересная возможность Delphi – создание процедур, автоматически выполняющихся через заданные промежутки времени. Для этого используется специальный объект Timer(), находящийся на закладке System. Этот объект – невизуальный, он не отображается на форме во время работы программы и его можно разместить в любом ее месте.
Главное свойство объекта Timerназывается Interval и задает время в миллисекундах, по истечении которого таймер вызывает процедуру, присоединенную к его событию OnTimer. Свойство Enabled включает и выключает таймер. Когда таймер включен, он постоянно и незаметно для пользователя отсчитывает время и, как только пройдет заданный интервал, выполняет заданную процедуру, затем снова начинает отсчитывать время и т.д.
Простейший пример работы таймера – вывод в заголовке формы текущего времени. Настроим таймер так, чтобы он вызывал процедуру каждую секунду. Для этого свойство Interval нужно установить в 1000, а свойство Enabled – в True. Обработчик события OnTimer имеет вид:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Caption:=TimeToStr(Now)
end;
Заставим наше НЛО мигать – менять цвет при движении – при помощи таймера. Настроим таймер так, чтобы он срабатывал каждые 100мс. Для управления цветом заливки НЛО придется ввести глобальную переменную clr, задав ей начальное значение clGreen
var clr:TColor=clGreen;
Обратите внимание на интересную особенность Delphi – глобальным переменным можно задавать начальные значения. В нашем случае в переменную clr с самого начала будет занесено значение clGreen (код зеленого цвета). TColor – это системный тип данных, предназначенный для хранения кодов цветов.
В процедуре таймера мы должны циклично менять значение переменной clr. Делается это так:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if clr=clGreen then
clr:=clRed
else
clr:=clGreen
end;
Здесь в переменную clr будут циклически заноситься то значение clGreen, то clRed.
Изменим процедуру Ufo, чтобы в ней использовалась переменная clr. Для этого заменим всего одну строчку на Brush.Color:=clr. Все! При запуске программы НЛО будет не только лететь по экрану, но и мигать то красным, то зеленым.
Применение нескольких таймеров позволяет организовать синхронную анимацию нескольких объектов. Например, можно создать несколько блуждающих по экрану астероидов, от которых должна увертываться управляемая пользователем летающая тарелка.