我很确定这个问题可以在 stackOverflow 上的某个地方得到解答,但我对此没有选择。
我有一个 VisualBasic 窗体,上面有一个按钮对象。我希望该按钮有一个 onClick 过程,以便单击它可以将变量或其他命令传递到另一个正在运行 Shockwave Flash“电影”的窗口。 (例如,Flash文件的ActionScript上有一个函数,可以在调用时显示运行的Flash视频中的一些文本。)
为了让这一切成为可能,我缺少什么?我知道这是关于fscommand
但不知道如何用它从 VB 传递变量。
执行此操作的方法是使用外部接口 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.htmlAS3 中的类。它允许数据在 AS3 和主机应用程序/容器(网页或 VB 表单等)之间传递。
在AS3端,设置如下:
function myAS3Function(someNumber:Number, someObject:Object)
{
//do something with your number and object
trace(someObject.isAwesome);
return "hello from AS3";
}
//register your function with a label VB can call/invoke
if (ExternalInterface.available){
ExternalInterface.addCallback("myAS3Function", myAS3Function);
}
从主机端来看,您发送/接收 XML http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cb2.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7caf到 ActiveX 对象。
您的 XML 如下所示:
<invoke name="myAS3Function" returntype="xml">
<arguments>
<number>5</number>
<object>
<property id="foo"><string>bar</string></property>
<property id="isAwesome"><true/></property>
</object>
</arguments>
</invoke>
现在,在 VB 中构造该 XML,并调用CallFunction
VB flash 对象的方法,向其传递 xml 字符串。
Dim returnValue As String
returnValue = MyFlashShockWaveObj.CallFunction(xml)
MsgBox(returnValue) 'hello from flash
如果您要传递大量对象,有时最简单的方法是对它们进行 JSON.stringify,然后将一个 JSON 字符串传递给 AS3(和/或返回)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)