我正在构建一个 Air for Android (AS3) 应用程序,它将加载远程 swf 文件(位于我的服务器上)
我们的想法是尽可能保持 apk 流线型以允许快速部署(将私下部署,而不是通过 Google Play 部署)
- 该 apk 称为 Loader
- 远程 swf 称为播放器。
现在,当我启动 Loader 时,Player 抛出了这个错误:
SecurityError:错误 #2070:违反安全沙盒:调用方http://sub.mydomain.com/remote/player.swf无法访问 app:/Loader.swf 拥有的 Stage。
这很奇怪,因为 Player 没有尝试调用 Loader 阶段 - 我告诉 Player 创建一个名为“_stage”的新阶段,代码如下:
var playerContainer:MovieClip = new MovieClip();
var _stage:Stage = playerContainer.stage;
使用:
_stage.stageWidth
访问舞台宽度。
我不知道为什么 Loader 认为 Player 试图访问它的舞台属性?
我已经尝试了在各种论坛帖子中提到的以下代码,但似乎没有任何东西可以缓解安全域的问题:
在装载机
try {Security.allowDomain("*");}catch (e) { };
在播放器中
Security.allowDomain("http://sub.mydomain.com");
以及在 Player 中,对于我的 init() 函数
addEventListener(Event.ADDED_TO_STAGE, displayLogin);
这些都没有帮助。
我完全不知所措。关于如何让 Loader 允许 Player 访问其舞台属性,这让我很头疼。
编辑 - 当两个 swf 文件都在服务器上时,我通过浏览器访问 Loader,而不是使用 android 应用程序,它加载正常。绝对是跨脚本的问题,但在我看来,我有所有正确的代码来允许这样做吗?