AS3 - AIR 主机和 SWF 发送器之间的 LocalConnection
AS3 - LocalConnection between AIR master & SWF sender
我无法在为 AIR 设置的主文件和为 FlashPlayer(常规 SWF)设置的从属文件之间使用本地连接。
这是两个测试文件的代码...
master/receiver 文件:
// test-AIR.fla
import flash.display.Loader;
var loadK1:Loader=new Loader();
loadK1.load(new URLRequest("K1/test-SWF.swf"));
addChild(loadK1);
var localConnection:LocalConnection = new LocalConnection();
localConnection.allowDomain("*");
localConnection.client = this;
localConnection.connect("_connectionName");
function onMethod(timeString:String):void {
trace("onMethod called at: " + timeString);
}
发件人...
// K1/test-SWF.fla
var localConnection:LocalConnection = new LocalConnection();
localConnection.send("_connectionName", "onMethod");
trace("END of test-SWF.swf");
然后,这是显示未调用 onMethod 的输出:
[SWF] test-AIR.swf - 1170 bytes after decompression
K1/test-SWF.swf - 625 bytes after decompression
END of test-SWF.swf[SWF]
我感觉我什么都试过了。有人可以指出哪里出了问题或我遗漏了什么吗?
谢谢,
由于两个 SWF 位于同一个 SecurityDomain 中,因此它们可以不受限制地访问彼此的显示列表。因此,我通过显示列表层次结构调用方法解决了这个问题:
MovieClip(this.parent.parent).onMethod();
这样,无论发布目标是什么(浏览器、桌面、移动设备...),都可以从子应用程序调用该方法。
@Organis 感谢您的帮助!
我无法在为 AIR 设置的主文件和为 FlashPlayer(常规 SWF)设置的从属文件之间使用本地连接。 这是两个测试文件的代码...
master/receiver 文件:
// test-AIR.fla
import flash.display.Loader;
var loadK1:Loader=new Loader();
loadK1.load(new URLRequest("K1/test-SWF.swf"));
addChild(loadK1);
var localConnection:LocalConnection = new LocalConnection();
localConnection.allowDomain("*");
localConnection.client = this;
localConnection.connect("_connectionName");
function onMethod(timeString:String):void {
trace("onMethod called at: " + timeString);
}
发件人...
// K1/test-SWF.fla
var localConnection:LocalConnection = new LocalConnection();
localConnection.send("_connectionName", "onMethod");
trace("END of test-SWF.swf");
然后,这是显示未调用 onMethod 的输出:
[SWF] test-AIR.swf - 1170 bytes after decompression
K1/test-SWF.swf - 625 bytes after decompression
END of test-SWF.swf[SWF]
我感觉我什么都试过了。有人可以指出哪里出了问题或我遗漏了什么吗? 谢谢,
由于两个 SWF 位于同一个 SecurityDomain 中,因此它们可以不受限制地访问彼此的显示列表。因此,我通过显示列表层次结构调用方法解决了这个问题:
MovieClip(this.parent.parent).onMethod();
这样,无论发布目标是什么(浏览器、桌面、移动设备...),都可以从子应用程序调用该方法。
@Organis 感谢您的帮助!