本文对于flash文件嵌入到winForm窗体后,测试对于flash的命令是否能正确获取其命令对应的指令及参数,已及对于两者交互的方法的demo

一、程序创建

1、 winForm程序需要添加flash控件,用于支持flash文件的播放。

  1. 添加工具箱外部flash ocx控件,C:\WINDOWS\system32\Macromed\Flash\中的xxx.Ocx
  2. 添加后工具箱显示了falsh的”FlashFactory”,“ShockwaveFlash”两个新控件,如果Shockwave Flash无法拖拽至winForm中(提示注册失败),此原因是没有对应的” Microsoft Multimedia Control, version 6.0”控件,同理添加C:\WINDOWS\system32\MIC32.ocx至工具箱即可
  3. 添加Shockwave Flash Object控件至界面,设置播放的swf文件路劲即可

2、 WinForm与flash交互方式

  1. flash命令触发事件FSCommand

设置对应控件的FSCommand事件的相应方法

图解:

 

  1. 使用 External API,可以实现falsh ActionScript 和 .net 的双向调用

利弊分析:使用A方式FSCommand参数只能传递一个,如果需要传递多个就需要在调用方(flash中)用字符串组合多个参数,传回后被调用方分解参数,局限性明显。使用External API可以实现双向调用,传参与返回值以XML文档格式传递。

图解:

 

Flash ActionScript 中声明提供给 hosting application 调用的回调函数import flash.external.ExternalInterface;

ExternalInterface.addCallback("setMessage", null, setMessageArgs);

.net程序端

1、  Flash控件的CallFunction方法调用对于的flash提供的方法

2、 Falash控件的FlashCall事件响应flash的方法调用

二、测试结果

1、FSCommand方式运行,查看点击对于falsh命令出发的区域,可以在FSCommand事件的相应方法中查看到对应事件参数。

 

界面以MessageBox显示参数

 

2、Flash Player 8 External API的方式与WinForm交互

 

运行结果

 

三、结论

对于winForm中嵌入的flash,可以正确触发对应命令,使用FSCommand只能在flash单一参数传递给程序,使用方法调用则可以传递多参数,且可以实现flash与程序的相互调用。

附件下载:https://files.cnblogs.com/dirkcloud/FlashCommandTest.rar

posted on 2011-06-28 13:00  诺维是个好斯基  阅读(1418)  评论(0)    收藏  举报