http://blog.163.com/hongfengye_8/blog/static/6945311720103903144944/

delphi+flash.ocx编程  

2010-04-09 00:31:44|  分类: 默认分类|举报|字号 订阅

 
 
要实现这一功能,首先要用到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:总帧数,只有当ReadyState4时才能访问该属性。

FrameNum:当前播放的帧。

Playing:播放或暂停一个Flash

Quality:指定当前渲染的质量,0=Low1=High2=AutoLow3=AutoHigh

ScaleMode:缩放模式,0=ShowAll1=NoBorder2=ExactFit

AlignMode:对齐模式,Left=1Right=2Top=4Bottom=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为按窗 口百分比。

TsetPropertytarget:widestringproperty_:integer,const value widestring):设定Flash中影片的属性。

TgetPropertytarget:widestring,property_:integer):取得Flash中影片的属性。

GetVariableconst name:widestring):取得Flash中变量的值。

SetVariableconst name:widestring,const value:widestring):设定Flash中 变量的值。

OnProgressint percent):读取一个Flash时触发。

OnReadyStateChangeint state):状态改变时 触发。States的值0=Loading1=Uninitialized2=Loaded3=Interactive4=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.完成了,测试一下,是不是可以相互传递数据呢?

如果上面写的有错的地方,请大家原谅!

上面是 转的。我要补充的是:

OnFSCommand这个事件是用来当flash中有命令传出来的时候,程序就能 收到一个消息,然后要怎么处理就自己写了。

貌似还有一个OnFlashCall是程序来对flash发送命令 ,不过没有成功过,气死我了。

因为在delphi2007中flash com控件没有callFunction这个方法,在delphi7中倒是有,不过一执行就报错。

希望有人能交流一下。