Библиотека программиста

02.06.2020 - Воспроизводим Flash-файл в своем приложении

Для воспроизведения видео в Delphi есть компонент TMediaPlayer. Но как быть если необходимо воспроизвести флэш-ролик? Оказывается в Delphi можно воспроизвести Flash ролики. Как же это сделать?

Для начала необходимо импортировать компонент ActiveX: для этого в главном меню выберите Component -> Immport ActiveX Control... Появляется окно. Найдите и выделите в списке Shockwave Flash (Version 1.0). Можно выбрать вкладку на панели инструментов - раздел Palette page. Не будем менять. Нажмите Install... Появится еще одно окно, в котором вам нужно будет выбрать в какой пакет будет установлен компонент. Нажмите ОК. Появится окно с подтверждением. Нажмите YES. И, наконец, появляется сообщение об успешной установке. Нажмите ОК. На экране остается еще одно окно - "Package - dclusr.dpk". Закройте его и подтвердите сохранение.

Компонент установили. Он появится во вкладке ActiveX на панели инструментов.

Для того, чтобы понять как с ним работать напишим простейший плеер. Выложите на форму: TShockwaveFlash(для удобства назовите его просто Flash1), TTrackBar, TOpenDialog, TTimer и 3 кнопки TButton. Измените Caption кнопок на "Открыть", "Воспроизведение", "Стоп".

Изменим следующие свойства OpenDialog'a:
Свойство Filter измените на Флэш-ролики|*.swf;
Свойство DefaultExt на *.swf;

У Timer1 установите свойство Interval на 1.

Теперь напишем обработчик события OnClick для кнопки, которая будет вызывать OpenDialog. Это кнопка с Caption="Открыть":

Код
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Flash1.Movie := OpenDialog1.FileName; // укажем путь к файлу
TrackBar1.Max := Flash1.TotalFrames; // установим длинну ролика
end;
end;



По клику на кнопку "Воспроизведение" будем выполнять следующий код:

Код
procedure TForm1.Button2Click(Sender: TObject);
begin
Flash1.Play; // Воспроизвести
end;



А по клику на кнопку "Стоп" будем выполнять следующий код:

Код
procedure TForm1.Button3Click(Sender: TObject);
begin
Flash1.Stop; // Останавливаем воспроизведение
end;



И осталось еще автоматически двигать TrackBar. Для этого и нужен таймер.

Код
procedure TForm1.Timer1Timer(Sender: TObject);
begin
TrackBar1.Position:=Flash1.CurrentFrame;
end;



Вот и все. Полный код программы:

Код

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, ShockwaveFlashObjects_TLB, ComCtrls,
ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
TrackBar1: TTrackBar;
Timer1: TTimer;
Flash1: TShockwaveFlash;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Flash1.Movie := OpenDialog1.FileName;
TrackBar1.Max := Flash1.TotalFrames;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Flash1.Play;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Flash1.Stop;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
TrackBar1.Position:=Flash1.CurrentFrame;
end;

end.

Опубликовано на сайте: http://www.coders-library.ru
Прямая ссылка: http://www.coders-library.ru/index.php?name=news&op=view&id=351