要实现这一功能,首先要用到ActiveX控件中的TShockwaveFlash控件。
首先让我们来将TShockwaveFlash控件加入到Delphi的组件面板中(没有装Flash的朋友可以从网上下载一个Flash8.ocx文件来进行安装)
1.打开Delphi(本人用的是Delphi7.0)点击菜单中的Component->Import ActiveX Control...
2.在弹出的窗口中的Import ActiveX子窗口中找到Shockwave Flash(Version1.0),然后点击Install...按钮,根据提示执行就可以了
3.安装完成后,你可以发现TShockwaveFlash控件已经加入到Delphi的ActiveX面板中了。
在这里有必要跟大家讲一些关于TShockwaveFlash控件的属性与方法:
属性:
ReadState
:读一个
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
。
事件&
方法:
Play()
:开始播放动画。
Stop()
:停止播放动画。注意:要实现停止功能,必须同时调用
Stop()
和
Rewind()
函数。
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
中变量的值。
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之间的数据传递只用到其中的GetVariable和SetVariable的两个方法。现在让我们来做一个简单的实例来演示一下如何进行数据传递吧。
1.打开flash,新建一个影片文件,在场景中加入一个动态文本框,并且给它一个变量,变量名为test,将影片生成swf影片。
2.打开Delphi,新建一个应用程序,在窗口中加入一个TShockwaveFlash控件(在ActiveX面板中)。
3.再加入两个按钮,一个用来传递数据,Caption属性:传递 另一个用来接收数据,Caption属性:接收。
4.在OnCreate事件中加入以下的代码:
ShockwaveFlash1.Movie:=GetCurrentdir+'\change.swf';//打开刚才制作的Flash影片
ShockwaveFlash1.Play;//播放
5.分别为两个按钮加入单击事件,源代码如下:
//传递数据
procedure TForm1.Button1Click(Sender: TObject);
begin
ShockwaveFlash1.SetVariable('test','传递数据');
end;
//接收数据
procedure TForm1.Button1Click(Sender: TObject);
var
str:String;
begin
str:=ShockwaveFlash1.GetVariable('test');
showmessage(str);
end;
6.完成了,测试一下,是不是可以相互传递数据呢?