Delphi与Flex交互

来源:互联网 发布:淘宝客培训 编辑:程序博客网 时间:2024/04/28 14:15

1、在Delphi中安装Flash控件

运行Delphi,选择菜单中的Component -> Import ActiveX Control,找到Shockwave Flash (Version 1.0)并安装,默认安装到ActiveX面板。

安装完成后,ActiveX面板就会出现TShockwaveFlash控件,这是Delphi对C:/WINDOWS/system32/Macromed/Flash/Flash10i.ocx的封装,现在我们就可以用这个控件来播放Flash了。

2、TShockwaveFlash的重要属性和事件

属性

Movie: Flash文件的绝对路径,网上说可以为URL。

事件

OnFlashCall: 在Flex中调用ExternalInterface.call时触发,参数request的格式为

OnFSCommand: 在Flex中调用fscommand时触发,两个参数command和args分别对应Flex调用时的2个参数。

OnReadyStateChange: 当Flash的状态发生改变时触发。网上说有5个状态(0=Loading, 1=Uninitialized, 2=Loaded, 3=Interactive和4=Complete),但经试验发现只有Interactive和Complete,且Complete总共触发了2到3次(一般情况下会触发2次,此时Stage已经加载进来,有背景。若为Application或任意添加一个ViewStack并设置backgroundImage,backgroundImage的图片可以不存在,则在Flex的creationComplete时会触发第3次)。若Flash文件不存在(如设置了相对路径),则只会触发一次Interactive。

3、建Flex工程

新建一个Flex Application,取名DelphiFlex。Flex代码如下:

 

在initialize事件中注册回调函数是因为准备在Delphi的OnReadyStateChange中调用该方法。如果是在creationComplete中注册回调函数,OnReadyStateChange就算newState第3次等于4时调用该方法仍会出错,可能是因为creationComplete未执行或正在执行。

4、建Delphi测试程序

新建一个Delphi工程,拖一个TShockwaveFlash控件过来,再放一个TButton和TEdit控件,TButton的label设为Call Flex。Delphi代码如下:

5.、Delphi若要在Flash加载完设置一些内容,最好是在Flex的creationComplete事件中触发事件,然后Delphi调用Flex的方法。因为OnReadyStateChange并不稳定。

6、Delphi调用Flex时可以有返回值,因为ShockwaveFlash1.CallFunction有返回值。Flex调用Delphi时由于OnFlashCall不能设置返回值,所以Flex取不到返回值。