一.添加FlashActiveX控件
要在Delphi中播放flash依賴於FlashActiveX控件,所以我們要先安裝它。運行Delphi後,選擇選單Component→Import ActiveX Control,找到SWFlash.OCX(或者Shockwaveflash.ocx) 文件進行安裝。安裝完成後,ActiveX面板裡出現TShockwaveFlash控件,這是Delphi對FlashActiveX控件的封裝,現在我們就可以用這個控件來播放Flash了。
二.TShockwaveFlash主要屬性、方法和事件
TShockwaveFlash主要屬性如下:
ReadyState:讀一個Flash文件時的狀態;
TotalFrames:總幀數,只有當ReadyState = 4時才能訪問該屬性;
FrameNum:當前播放的幀;
Playing:播放或暫停一個Flash;
Quality:指定當前渲染的質量,包括0=Low, 1=High、2=AutoLow、3=AutoHigh;
ScaleMode:縮放模式,0=ShowAll、1= NoBorder、2 = ExactFit;
AlignMode:對齊模式,Left=1、Right=2、Top=4、Bottom=8;
BackgroundColor:背景色,-1為默認顏色;
Loop:是否循環;
MovIE:指定播放的Flash文件路徑,可以為一個URL。
TShockwaveFlash主要方法如下:
Play():開始播放動畫;
Stop();停止播放動畫;
Back();播放前一幀動畫;
Forward():播放後一幀動畫;
Rewind():播放第一幀動畫;
SetZoomRect(int left, int top, int right, int bottom):設置縮放的區域;
Zoom(int percent):縮放(按百分比);
Pan(int x, int y, int mode):縮放播放面板,其中模式0為按像數、1為按窗口百分比。
TSetProperty(target:widestring,property_:integer,const value widestring):設定Flash中影 片的屬性;
TGetProperty(target:widestring,property_:integer):取得Flash中影片的屬性;
GetVariable(const name:widestring):取得Flash中動態文本的值;
SetVariable(const name:widestring,const value:widestring):設定Flash中動態文本的值;
TShockwaveFlash主要事件如下:
OnProgress(int percent):讀取一個Flash時觸發;
OnReadyStateChange(int state):狀態改變時觸發。states的值可以為0=Loading、
1=Uninitialized、2=Loaded、3=Interactive和4=Complete。
OnFSCommand(const command, args: WideString):可用來讀取Flash按鈕中的參數;
三.Delphi與Flash的信息通道
1.利用flash控件的Fscommand屬性來讀取Flash按鈕中的參數及參數的值。
例: 新建一個flash文件,在Flash主場景中添加四個按鈕依次在按鈕中添加如下腳本:
第一個按鈕: on (release) {
fscommand (”Num1”, ”1”);
}
第二個按鈕: on (release) {
fscommand (”Num1”, ”2”);
}
第三個按鈕: on (release) {
fscommand (”Num2”, ”1”);
}
第四個按鈕: on (release) {
fscommand (”Num2”, ”2”);
}
新建一Delphi工程,在Form中添加Flash控件,設置好其movIE屬性,雙擊FSCommand事
件,添入以下代碼:
procedure TForm1.ShockwaveFlash1FSCommand(Sender: TObject; const command,args:
WideString);
begin
if command=’Num1’ then showmessage(’Num1’);
if ((command=’Num1’) and (args=’1’)) then showmessage(’Num1 1’);
if ((command=’Num1’) and (args=’2’)) then showmessage(’Num1 2’);
if command=’Num2’ then showmessage(’Num1’);
if ((command=’Num2’) and (args=’1’)) then showmessage(’Num2 1’);
if ((command=’Num2’) and (args=’2’)) then showmessage(’Num2 2’);
( end;
2.利用flash控件的Setvariable或Getvariable方法來讀或寫Flash動態文本框中的內容。
例: 新建一個flash文件,在Flash主場景中添加一動態文本框,將其variavle設為Text1.
新建一Delphi工程,在Form中添加Flash控件,設置好其movIE屬性,再添加二個Button控件,雙
擊Button1,添入以下代碼:
procedure TForm1.Button1Click(Sender: TObject);
begin
shockwaveFlash1.SetVariable(’Text’,’信息已經到達!’);
end;
雙擊Button2,添入以下代碼:
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(shockwaveFlash1.GetVariable(’Text’));
end;
3. 利用flash控件的TSetProperty或TGetProperty方法來讀或寫Flash影片的屬性。
例: 新建一個flash文件,在Flash主場景中添加一影片(MC),將其name設為MC1.
新建一Delphi工程,在Form中添加Flash控件,設置好其movIE屬性,再添加二個Button控件和timer
控件,button1的caption設為Start;button2的caption設為End;代碼如下:
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
s:string;
begin
s:=shockwaveFlash1.TGetProperty(’MC1’,6);
i:=strtoint(s);
i:=i-10;
s:=inttostr(i);
shockwaveFlash1.TSetProperty(’MC1’,6,s);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Interval :=500;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Interval :=0;
end;
運行後,可以看到影片的透明度越來越小。shockwaveFlash1.TGetProperty(’MC1’,6)語句中的6表示影片的透明度屬性,
其他屬性如下:
0----------->表示影片x坐標
1----------->表示影片y坐標
2----------->表示影片xscale
3----------->表示影片yscale
6----------->表示影片的透明度
7----------->表示影片可見性
8----------->表示影片的寬度
9----------->表示影片的高度
10---------->表示影片旋轉