本文对于flash文件嵌入到winForm窗体后,测试对于flash的命令是否能正确获取其命令对应的指令及参数,已及对于两者交互的方法的demo
一、程序创建
1、 winForm程序需要添加flash控件,用于支持flash文件的播放。
- 添加工具箱外部flash ocx控件,C:\WINDOWS\system32\Macromed\Flash\中的xxx.Ocx
- 添加后工具箱显示了falsh的”FlashFactory”,“ShockwaveFlash”两个新控件,如果Shockwave Flash无法拖拽至winForm中(提示注册失败),此原因是没有对应的” Microsoft Multimedia Control, version 6.0”控件,同理添加C:\WINDOWS\system32\MIC32.ocx至工具箱即可
- 添加Shockwave Flash Object控件至界面,设置播放的swf文件路劲即可

2、 WinForm与flash交互方式
- flash命令触发事件FSCommand
设置对应控件的FSCommand事件的相应方法
图解:

- 使用 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
浙公网安备 33010602011771号