Тема: Delphi и Flash
Показать сообщение отдельно
  #3  
Старый 15.02.2007, 19:32
Аватар для Artem28
Artem28 Artem28 вне форума
Прохожий
 
Регистрация: 07.08.2006
Сообщения: 32
Репутация: 10
По умолчанию

Теперь напишем обработчик события OnClick для кнопки, которая вызывать OpenDialog:

if open1.Execute then begin
flash1.Movie:=open1.FileName;
trackbar1.Max:=flash1.TotalFrames; {это делается для того, чтобы потом можно было перемещаю ползунок посмотреть каждый кадр ролика}

В обработчик события OnClick для второй кнопки ("Старт") напишем:

flash1.Play;

Ну тут вообще все просто! Почти таким же образом это будет выглядеть для третьей кнопки ("Стоп"):

flash1.Stop;

Теперь сделаем, чтобы при перемещении ползунка Trackbar'a мы могли посмотреть каждый кадр (событие OnChange):

if Flash1.IsPlaying=true then Flash1.Stop; {если ролик проигрывается, то надо его остановить}
flash1.GotoFrame(trackbar1.position); {открываем кадр номер которого соответствует позиции ползунка}

Ну и наконец осталось сделать чтобы при проигрывании ролика ползунок перемещался, указывая сколько осталось и сколько прошло. Для этого то мы и используем Timer. В обработчик события OnTimer,напишем:

trackbar1.Position:=flash1.CurrentFrame;

Приведу полный код приложения:

Код:
unit flash; 

interface 

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

type 
  TForm1 = class(TForm) 
    Flash1: TShockwaveFlash; 
    Button1: TButton; 
    TrackBar1: TTrackBar; 
    Open1: TOpenDialog; 
    Button2: TButton; 
    Button3: TButton; 
    Timer1: TTimer; 
    procedure Button1Click(Sender: TObject); 
    procedure Button2Click(Sender: TObject); 
    procedure Button3Click(Sender: TObject); 
    procedure TrackBar1Change(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 open1.Execute then 
    begin 
      flash1.Movie := open1.FileName; 
      trackbar1.Max := flash1.TotalFrames; 
    end; 
end; 

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

procedure TForm1.TrackBar1Change(Sender: TObject); 
begin 
  if Flash1.IsPlaying = true then Flash1.Stop; 
  flash1.GotoFrame(trackbar1.position); 
end; 

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

procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
  trackbar1.Position := flash1.CurrentFrame; 
end; 

end. 
Ну вот и все. Как оказалось ничего сложного.
Ответить с цитированием