我正在尝试使用 LocalConnection 在 flex 4.1 应用程序与 flash 动作脚本 2 应用程序之间进行通信。
闪存应用程序
包含一个名为 btn01 的按钮和以下代码:
var a:LocalConnection = new LocalConnection();
btn01.onPress = function() {
trace("button clicked");
a.send("abcde","test");
}
您可以在此处看到它向名为“abcde”的连接发送了一个测试命令。
弹性应用
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" initialize="init()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void {
var a:LocalConnection = new LocalConnection();
a.client=this;
a.connect("abcde");
}
public function test():void {
Alert.show("test");
}
]]>
</fx:Script>
<mx:SWFLoader source="/location/as2-flash-file.swf" />
如您所见,在 flex 应用程序中,我连接到名为“abcde”的 LocalConnection,并将客户端设置为“this”,这意味着可以从 LocalConnection 执行所有公共功能。
SWFLoader 元素加载 as2 闪存文件。
每当我单击按钮时,我都会看到跟踪消息,但功能测试不会在 flex 应用程序上执行。有任何想法吗?
更新
这两个应用程序位于同一个域上,实际上在本地主机上,因此不需要使用 allowDomain 并且两个应用程序都是基于 Web 的。