Как, наверно, понятно из названия статьи, мы с тобой сейчас будем писать свой собственный Flash Плеер. Думаю, объяснять, что это такое не надо. Хотя… На всякий случай скажу : это прога для проигрывания SWF-файлов. Это такие мультики. Для этого примера просто Delphi будет недостаточно, точнее его стандартных компонентов. Чтобы немного расширить их количество, давай импортируем компонент ShockwaveFlash, из библиотеки ActiveX.
Для этого выбери пункт меню Component-Import ActiveX Control. Откроется диалоговое окно импортирования компонента. Из предложенного списка выбирай Shockwave Flash (Version 1.0). В разделе Pallete Page… выбирай страницу в палитре компонентов, на которой будет располагаться установленный компонент (по умолчанию это ActiveX). В разделе Unit Dir Name… путь к папке куда будет установлен компонент (я всегда оставляю всё по умолчанию). Жми Install, вылезет ещё одно диалоговое окно с возможностью изменения каких-то настроек, но нам они не очень то и интересны, так что жми OK. Дальше появится окно редактирования выбранного пакета, нажимай Compile и Install. Затем жми File-CloseAll. На вопрос «Стоит ли сохронять изменения в проекте» отвечай положительно.
Всё. Если ты сделал всё правильно, то на палитре компонентов появится новая вкладка «ActiveX», а на ней новый компонент ShockwaveFlash. Сразу кидай его на свою форму. Ещё на форме должны быть четыре кнопки (Button), один TrackBar, OpenDialog, Timer. Ну наверное хватит. Давай теперь назовём кнопки, я сделал это так : «Open», «Play», «Stop» и «Exit». Рисунок моей формы ты можешь увидеть ниже:
Не пугайся, этот рисунок так страшен, потому что у компонента ShockwaveFlash есть своеобразный глюк — он запоминает всё, что повер его (например, на рисунке это кусок тектса программы). Но это только в процессе проектирования, в компильнутом виде всё выглядит так как надо.
Теперь давай кодить! Только сначала нужно сделать несколько движений в сторону OpenDialog’а. А именно изменить несколько его свойств. Свойство Filter может быть таким: Флэшки|*.swf, свойство DefaultExt должно быть: *.swf. Создовай обработчик нажатия кнопки «Open» и пиши там :
if OpenDialog1.Execute then
Begin
ShockwaveFlash1.Movie:=OpenDialog1.FileName;
Form1.Caption:=’Мега FlashPlayer’+OpenDialog1.FileName;
TrackBar1.Max:=ShockwaveFlash1.TotalFrames;
ShockwaveFlash1.Play;
end;
Здесь всё очень просто : Сначала загружаем в ShockwaveFlash1 файл из OpenDialog’а, потом меняем капшин формы, для того, чтобы пользователь мог видеть, какой файл открыт. Потом максимальному значению TrackBar1’а присваиваем ShockwaveFlash1.TotalFrames. Это ничто иное как количество фреймов (кадров) в открытом флеш-ролике. Ну а последней строкой кода заставляем проиграться открытый мультик. Теперь обработчик нажатия кнопки «Play», здесь, я думаю, мои коментарии не понадобятся:
ShockwaveFlash1.Play;
Дальше обработчик нажатия кнопки «Stop» :
ShockwaveFlash1.Stop;
Затем обработчик нажатия кнопки «Exit» :
Form1.Close;
Так, с кнопками закончили. Теперь давай займёмся таймером. Выставляй его свойство Interval равным 1. Это чтобы код, выполняющийся в момент cрабатывания таймера, выполнялся почти без задержки времени. А сам обработчик срабатывания таймера выглядит так :
TrackBar1.Position:=ShockwaveFlash1.CurrentFrame;
Это для того, чтобы позиция тракбара менялась с изменением кадров мультика. Ну и завершающей процедурой будет обработчик события OnChange для тракбара :
if ShockwaveFlash1.Playing=false then
ShockwaveFlash1.GotoFrame(TrackBar1.Position);
