Компонент Animate
Компонент Animate, значок которого находится на вкладке Win32 (рис. 11.1), позволяет воспроизводить простую анимацию, кадры которой находятся в AVI-файле.
Рис. 11.1. Значок компонента Animate
Примечайте Хотя анимация, находящаяся в AVI-файле может сопровождаться звуковыми эффектами (так ли это — можно проверить, например, при помощи стандартной программы Проигрыватель Windows Media), компонент Animate обеспечивает воспроизведение только изображения. Для полноценного воспроизведения сопровождаемой звуком анимации следует использовать компонент меdiaPlayer.
Компонент Animate добавляется к форме обычным образом. После добавления компонента к форме следует установить значения его свойств. Свойства компонента Animate перечислены в табл. 11.1.
Таблица 11.1. Свойства компонента Animate
| | | | | | | | | | Имя компонента. Используется для доступа к свойствам компонента и управлением его поведением
| | | | Имя AVI-файла в котором находится анимация, отображаемая при помощи компонента
| | | | Номер кадра, с которого начинается отображение анимации
| | | | Номер кадра, на котором заканчивается отображение анимации
| | | | Признак активизации процесса отображения кадров анимации
| | | | Цвет фона компонента (цвет "экрана"), на котором воспроизводится анимация
| | | | Режим использования "прозрачного" цвета при отображении анимации
| | | | Количество повторов отображения анимации
| | | | | |
Следует еще раз обратить внимание, что компонент 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
После запуска программы в форме выводится первый кадр анимации. Программа обеспечивает два режима просмотра анимации: непрерывный и покадровый.
Кнопка 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 | | Удаление файла в корзину | |
Источник: http://qo.do.am/index/teorija_po_programirovaniju/0-47 СОДЕРЖАНИЕ Delphi 7 |