VC程序中播放Flash,需要嵌入ActiveX控件,Adobe公司提供了一个播放flash的ActiveX控件Shockwave flash object。下载安装“install_flash_player_10_active_x.exe”(目前的最新版本是10.2.3.1)。 同大多数的ActiveX控件一样,VC为Flash实现了一个CWnd的包装:CShockwaveFlash,该类实现了Flash ActiveX控件的所有功能。
Shockwave Flash Object事件简介
shockwave flash object控件有四个事件句柄(event handler)。分别是:FSCommand, OnProgress, FlashCall, OnReadyState。
其中,FSCommand就是flash就是给支持它的应用程序发送消息的手段。flash完全是通过发送文本消息的方式给外部发送指令的。所以我们可以在写flash前预先定义好一系列命令名称,然后在flash的关键帧或一些按钮点击响应中发送这些指令。外部根据接受到的指令做对应的响应。由此就达到了flash与应用程序的交互。
除了利用FSCommand外,shockwave flash object还提供了两个进行交互的函数,一个是CString GetVariable(LPCTSTR name),用来获得flash动画中变量name的值,该值以CString的形式返回给调用者;一个是void SetVariable(LPCTSTR name, LPCTSTR value),可以用来将flash动画中的name变量设置一个值value。但这种交互方式有比较高的耦合性,需要flash开发者及应用程序的开发者有比较紧密的配合。但这种方式也可以一些交互性很强的flash。
当然更多的是两种方式同时采用。因为这两种方法各有不同的使用背景。一般来说如果需要对整个flash和应用程序的外部行为进行控制则采用FSCommand,而如果只是需要对flash的内部动作进行响应则使用GetVariable和SetVariable。
FSCommand事件说明
FSCommand(command,args)命令有两个参数,都是字符串,你可以在flash脚本中指定任意的字符串。比如用户按下flash动画的一个按钮就发送FSCommand("bt","bt1")这样一个消息,按下另一个按钮发送FSCommand("bt","bt2"),而我们的程序收到FSCommand消息后就对通过两个参数的不同字符串来判断用户按下的是哪个按钮。简单的说,就是在flash动画中使用FSCommand发送消息,在我们的程序接收和处理FSCommand消息。
其它说明
Shockwave flash object控件还提供了ReadyState、TotalFrames、Playing、Quality、AlignMode、BackgroundColor、Loop、FrameNum、SetZoonRect、Zoom、Play、Stop、Back、Forward、Rewind、StopPlay、GotoFrame、CurrentFrame、IsPlaying、LoadMovie等属性和方法,可以在组态中对flash播放进行控制。
Flash与后台数据交互方法
- LoadVars(XML)
- Flash Remoting
- Webservice
- XMLSocket
- FlashCom(FMS)
PS:
C++与Flash的交互具体实现方式可参考
http://blog.csdn.net/xoyojank/archive/2008/10/22/3122679.aspx