Другие языки программирования и технологии

Сложно ли написать свой собственный Flash Player в виде ехе-программы ?

Слава Югай
Слава Югай
126
Судите сами!

Я воспользуюсь Borland Delphi 7. Вначале создадим новую (чистую) форму и перетянем на нее компонент TShockwaveFlash. Где его найти? Ну, лично у меня он находится на вкладке ActivX. Если он у вас не установлен, то идем в меню программы Component | Import ActivX Control.

В появившемся окне из списка выбираем Shockwave Flash (version 1.0) и жмем кнопку Install, ничего не меняя ни в каких полях! Подтверждаем установку, перекомпилируем и сохранимся. Теперь вы сможете найти этот компонент на вкладке ActiveX.

До кучи к этому компоненту кидаем TToolBar (вкладка Win32) и создаем на нем 6 кнопок TToolButton («Играть» , «Остановить» , «Назад» , «Вперед» , «В начало» , «Настройки» соответственно) и еще один компонент – TStatusBar (на той же вкладке) . Для поддержания «дружественного интерфейса» , добавим на нашу форму компоненты [color=blue]TMainMenu (для создания верхней строки меню) , TOpenDialog (для открытия файлов macromedia flash) и TImageList (для показа иконок для кнопок TToolButton) – вкладки Standard, Dialogs и Win32 соответственно.

Пропишем некоторые свойства для компонентов в Object Inspector:

Компонент MainMenu1 – свойство Images -> ImageList1
Компонент OpenDialog1 – свойство Filter -> Macromedia Flash (*.swf)|*.swf;
Компонент ShockwaveFlash1 – свойство Align -> alClient

Размеры нашего окна приложения – 416х526.

Теперь займемся описанием событий OnClick для созданных кнопок.

Кнопка «Играть» - запуск flash-файлов:

OpenDialog1.InitialDir:= ExtractFileDir(Application.ExeName); //ищем в текущей директории с программой
if OpenDialog1.Execute() then
begin
if (ShockwaveFlash1.IsPlaying()) then ShockwaveFlash1.Stop(); //проверяем, если какой-либо файл уже был запущен, то останавливаем его
ShockwaveFlash1.Movie:= OpenDialog1.FileName; //присваиваем имя нового flash-файла для воспроизведения, который мы выберем
StatusBar1.Panels[0].Text:= 'Число фреймов: ' + IntToStr(ShockwaveFlash1.TotalFrames); //дополнительная примочка – число фреймов в открытом файле
ShockwaveFlash1.Play(); //запускаем наш файл
End;

Кнопка «Остановить» - остановка flash-файлов:

ShockwaveFlash1.Stop(); //все гениальное – просто!

Кнопка «Назад» :

if ShockwaveFlash1.IsPlaying() then ShockwaveFlash1.Stop();
ShockwaveFlash1.Back();

Кнопка «Вперед» :

if ShockwaveFlash1.IsPlaying() then ShockwaveFlash1.Stop();
ShockwaveFlash1.Forward();

Кнопка «В начало» - возврат в начало файла:

if ShockwaveFlash1.IsPlaying() then ShockwaveFlash1.Stop();
ShockwaveFlash1.Rewind();

Понадобится всего лишь 10 минут.
АК
Анатолий Кокорин
4 444
Лучший ответ
С нуля - да. Используя сторонние компоненты, как уже советовали, - проще.