Delphi для начинающих



 

Компонент Animate


Компонент Animate, значок которого находится на вкладке Win32 (рис. 11.1), позволяет воспроизводить простую анимацию, кадры которой находятся в AVI-файле.

Рис. 11.1. Значок компонента Animate

Примечайте

Хотя анимация, находящаяся в AVI-файле может сопровождаться звуковыми эффектами (так ли это — можно проверить, например, при помощи стандартной программы Проигрыватель Windows Media), компонент Animate обеспечивает воспроизведение только изображения. Для полноценного воспроизведения сопровождаемой звуком анимации следует использовать компонент меdiaPlayer.

Компонент Animate добавляется к форме обычным образом. После добавления компонента к форме следует установить значения его свойств. Свойства компонента Animate перечислены в табл. 11.1.

Таблица 11.1. Свойства компонента Animate

Свойство

Определяет

Name

Имя компонента. Используется для доступа к свойствам компонента и управлением его поведением

FileName

Имя AVI-файла в котором находится анимация, отображаемая при помощи компонента

StartFrame

Номер кадра, с которого начинается отображение анимации

stopFrame

Номер кадра, на котором заканчивается отображение анимации

Activate

Признак активизации процесса отображения кадров анимации

Color

Цвет фона компонента (цвет "экрана"), на котором воспроизводится анимация

Transparent

Режим использования "прозрачного" цвета при отображении анимации

Repetitions

Количество повторов отображения анимации

Следует еще раз обратить внимание, что компонент Animate предназначен для воспроизведения AVI-файлов, которые содержат только анимацию. При попытке присвоить записать в свойство FileName имя файла, который содержит звук, Delphi выводит сообщение о невозможности открытия указанного файла (Cannot open AVI). Чтобы увидеть, что находиться в AVI-файле: анимация и звук или только анимация, нужно из Windows раскрыть нужную папку, выделить AVI-файл и из контекстного меню выбрать команду Свойства. В результате этого откроется окно Свойства, на вкладке Сводка (рис. 11.2) которого будет выведена подробная информация о содержимом выбранного файла.

Следующая программа, текст которой приведен в листинге 11.1, демонстрирует использование компонента Animate для отображения в диалоговом окне программы анимации. Вид формы программы приведен на рис. 11.3, а значения свойств компонента Animatel — в таблице 11.2.

Рис. 11.2. На вкладке Сводка отражается информация об AVI-файле

Рис. 11.3. Форма программы Просмотр анимации

Таблица 11.2. Значения свойств компонента Animate1

Свойство

Значение

FileName

bart.avi

Active

False

Transparent

True

После запуска программы в форме выводится первый кадр анимации. Программа обеспечивает два режима просмотра анимации: непрерывный и покадровый.

Кнопка Button1 используется как для инициализации процесса воспроизведения анимации, так и для его приостановки. Процесс непрерывного воспроизведения анимации инициирует процедура обработки события Onclick на кнопке Пуск, которая присваивает значение True свойству Active. Эта же процедура заменяет текст на кнопке Button1 с Пуск на Стоп. Режим воспроизведения анимации выбирается при помощи переключателей Ra-dioButton1 и RadioButton2. Процедуры обработки события Onclick на этих переключателях изменением значения свойства Enabled блокируют или, наоборот, делают доступными кнопки управления: активизации воспроизведения анимации (Buttoni), перехода к следующему (Button2) и предыдущему (Buttons) кадру. Во время непрерывного воспроизведения анимации процедура обработки события OnCkick на кнопке Стоп (Buttoni) присваивает значение False свойству Active и тем самым останавливает процесс воспроизведения анимации.

Листинг 11.1. Использование компонента Animate

unit ShowAVI_; interface

uses

Windows, Messages, SysUtils,

Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Animate1: TAnimate; // компонент Animate

Button1: TButton; // кнопка Пуск-Стоп

Button2: TButton; // следующий кадр

Button3: TButton; // предыдущий кадр

RadioButton1: TRadioButton; // просмотр всей анимации

RadioButton2: TRadioButton; // покадровый просмотр

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

private

{ Private declarations } public

{ Public declarations ) end;

var

Form1: TForm1; // форма

CFrame: integer; // номер отображаемого кадра

// в режиме покадрового просмотра

implementation {$R *.DFM}

// к следующему кадру

procedure TForm1.Button2Click(Sender: TObject);

begin

if CFrame = 1 then Button2.Enabled := True;

if CFrame < Animate1.FrameCount then begin

CFrame := CFrame + 1;

// вывести кадр

Animate1.StartFrame := CFrame;

Animate1.StopFrame := CFrame;

Animate1.Active := True;

if CFrame = Animatel.FrameCount // текущий кадр — последний

then Button2.Enabled:=False;

end;

end;

// к предыдущему кадру

procedure TForm1.Button3Click(Sender: TObject);

begin

if CFrame = Animate1.FrameCount

then Button2.Enabled := True;

if CFrame > 1 then begin

CFrame := CFrame — 1;

// вывести кадр

Animate1.StartFrame := CFrame;

Animate1.StopFrame := CFrame;

Animate1.Active := True;

if CFrame = 1 // текущий кадр — первый

then Form1.Button3.Enabled := False;

end;

end;

// активизация режима просмотра всей анимации

procedure TForml.RadioButtonlClick(Sender: TObject);

begin

Buttonl.Enabled:=True; //доступна кнопка Пуск

// сделать недоступными кнопки покадрового просмотра

Form1.Button3.Enabled:=False ;

Form1.Button2.Enabled:=False;

end;

// активизация режима покадрового просмотра

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Button2.Enabled:=True; // кнопка Следующий кадр доступна

Buttons.Enabled:=False; // кнопка Предыдущий кадр недоступна

// сделать недоступной кнопку Пуск — вывод всей анимации

Buttonl.Enabled:=False; end;

// пуск и остановка просмотра анимации

procedure TForm1.ButtonlClick(Sender: TObject);

begin

if Animate1.Active = False // в данный момент анимация не выводится

then begin

Animate1.StartFrame:=l; // вывод с первого

Animate1.StopFrame:=Animate1.FrameCount; // по последний кадр

Animate1.Active:=True;

Button1.caption:='Стоп';

RadioButton2.Enabled:=False;

end

else // анимация отображается

begin

Animate1.Active:=False; // остановить отображение

Button1.caption:='Пуск';

RadioButton2.Enabled:=True;

end;

end;

end.

Компонент Animate позволяет программисту использовать в своих программах стандартные анимации Windows. Вид анимации определяется значением свойства СommonAVI. Значение свойства задается при помощи именованной константы. В табл. 11.3 приведены некоторые значения констант, вид анимации и описание процесса, для иллюстрации которого используется эти анимации.

Таблица 11.3. Значение свойства comonAVi определяет анимацию

Значение

Анимация

Процесс

aviCopyFiles Копирование файлов
AviDeleteFile Удаление файла
aviRecycleFile Удаление файла в корзину