Delphi与flash的信息通道

一.添加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---------->表示影片旋转