18.3.9. TAnimate - отображение анимации

Компонент TAnimate представляет собой проигрыватель видеоклипов формата AVI (Audio Video Interleaved - чередование аудио и видео). Компонент воспроизводит видеочасть файла AVI и игнорирует его звуковое сопровождение. Он способен показывать лишь несжатое изображение или изображение, сжатое по методу RLE (Run-Length Encoding). Изображение воспроизводится в отдельном потоке команд, что освобождает ресурсы программы для выполнения необходимой работы на фоне демонстрации клипа.

Если вы захотите посмотреть компонент в действии (рис. 18.24), выполните следующее:

Рис. 18.24. Демонстрация компонента TAnimate

procedure TForml.BitBtnlClick(Sender: TObject);

begin

Animatel.FileName := 'cool.avi'; // Указываем файл с клипом

Animatel.Active := True; // Запускаем клип

ProgressBarl.Show; // Показываем ProgressBar

Timeri.Enabled := True; // Включаем таймер

end;

Timer1:

procedure TFormI.TimerlTimer(Sender: TObject) ;

begin

ProgressBarl.Position := ProgressBarl.Position + 1;

if ProgressBarl.Position >= ProgressBarl.Max then

begin

Timeri.Enabled := False; // Выключаем , таймер

ProgressBarl.Positinr := о; // Готовим новый запуск

ProgressBarl.Hide; // Прячем ProgressBar

Animatel.Stop // Останавливаем клип

end;

end;

Свойства компонента:

property Active: Boolean;

 

 

Разрешает/запрещает демонстрацию клипа. Во время демонстрации содержит True

property AutoSize: Boolean;

Если содержит True, компонент автоматически устанавливает свои размеры так, чтобы полностью разместить изображение кадра

property Center: Boolean;

 

Центрирует изображение кадра в границах компонента по горизонтали и по вертикали

TCommonAVI = (aviNone, aviFind-

Folder, aviFindFile, aviFindCom-

puter, aviCopyFiles, aviCopyFile,

aviRecycleFile, aviEmptyRecycle, aviDeleteFile) ;

property ComrnonAVI: TCommonAVI;

Задает один из стандартных видеоклипов, входящтх в библиотеку SHELL32 . DLL (СМ.

рис. 18.25)

 

 

property FileName: TFileName;

Связывает компонент с AVI-файлом

property FrameCount: Integer;

 

Содержит количество кадров, показанных с

начала демонстрации клипа

property FrameHeight: Integers;

Высота в пикселях одного кадра клипа

property FrameWidth: Integers;

Ширина кадра

property Open: Boolean;

Содержит True, если компонент связан с AVI-клипом и готов к работе

property Repetitions: Integers;

 

 

Определяет количество повторений клипа.

Если 0, клип повторяется до тех пор, пока свойство Active содержит True

property ResHandle: THandle;

 

Указывает дескриптор ресурсного файла, содержащего AVI-клип

property ResHandle: THandle;

 

 

Указывает идентификатор ресурса с клипом в ресурсном файле

property ResName: Strings;

 

 

Указывает имя ресурса с клипом в ресурсном файле

property StartFrame: Smallint;

 

 

Содержит номер начального кадра демонстрации (нумерация кадров начинается с 1)

property StopFrame: Smallint;

 

 

Содержит номер конечного кадра демонстрации (нумерация кадров начинается с 1)

property Timers: Boolean; property Transparent: Boolean;

Разрешает/запрещает синхронизацию по таймеру. Если True, демонстрация синхронизируется сигналами таймера. Если False, для демонстрации используется независимый поток команд Если содержит True, фон клипа не накладывается на фон компонента

 

С помощью свойства commonAvi можно заставить компонент показывать один из стандартных видеоклипов, показанных на рис. 18.25.

Рис. 18.25 . Видеоклипы свойства Соmmоn АVI

Методы компонента:

procedure Play(FromFrame, ToFrame: Word; Count: Integer);

Демонстрирует Count раз подряд фрагмент клипа, начиная с кадра FromFrame по ToFrame включительно (нумерация кадров начинается с 1)

procedure Reset;

procedure Seek(Frame: Smallint) ; procedure Stop;

Восстанавливает исходное состояние компонента. Свойство Open вновь становится True, но свойство Active = False Пропускает и не показывает кадр с номером Frame (нумерация кадров начинается с 1) Прекращает показ клипа

Для компонента определены следующие события:

property OnClose: TNotifyEvent;

property OnOpen: TNoti-fyEvent; property OnStart: TNoti-fyEvent; property OnStop: TNotifyEvent;

Возникает при установке значения False в свойство Open. Например, когда компонент демонстрирует несколько видеоклипов подряд Возникает при установке значения True в свойство Open Возникает в момент начала демонстрации

Возникает в момент прекращения демонстрации