【发布时间】:2019-02-22 05:27:05
【问题描述】:
我无法在为 AIR 设置的主文件和为 FlashPlayer(常规 SWF)设置的从属文件之间使用本地连接。 下面是两个测试文件的代码...
主/接收文件:
// 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字节
K1/test-SWF.swf - 解压后625字节
测试结束-SWF.swf[SWF]
我觉得我什么都试过了。有人能指出什么是错的或我错过了什么吗? 谢谢,
【问题讨论】:
-
一些疯狂的猜测。 1. 在您设置 LocalConnection 之后加载外部 SWF。谁知道呢,也许它在你连接接收器之前就加载并执行了。 2. 为所有可能的事件注册所有 LC 并跟踪它们。可能会给你一个提示。 3. 我认为onMethod 方法必须是public。 4. 首先在一个 SWF 中尝试它并确保它有效。 5. 阅读官方文档,有很多细微差别:help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…
-
谢谢,我尝试了一切,但没有成功。恐怕这是由于移动设备配置文件不支持 LocalConnection :help.adobe.com/en_US/air/build/… 我正在寻找解决方法。提示将不胜感激!
-
为什么需要 LC 在单个应用程序实例中进行通信?
-
这是一个最初为网络浏览器设计的大型应用程序。使用多个文件可以加快加载速度。它总共有 10 多个 FLA/SWF 文件。现在,我正在尝试将其移植到移动和桌面设备。
-
看看Flex ModuleLoader。根据您的架构,这可能是一种选择。
标签: android actionscript-3 flash air localconnection