AS3 Air for Android〔错误2070〕-远程加载的SWF无法从应用程序访问Stage



我正在构建一个Air for Android(AS3)应用程序,该应用程序将加载远程swf文件(位于我的服务器上)

这个想法是保持apk尽可能的流式排列,以允许快速部署(将私下部署,而不是通过Google Play)

  • apk被称为Loader
  • 远程swf称为播放器

现在,当我启动Loader:时,Player抛出了这个错误

SecurityError:错误#2070:安全沙盒冲突:调用者http://sub.mydomain.com/remote/player.swf无法访问应用程序拥有的阶段:/Loader.swf.

这很奇怪,因为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访问其后台属性,这是我的首要任务。

EDIT-当两个swf文件都在服务器上,并且我通过浏览器访问Loader,而不是使用android应用程序时,它加载得很好。交叉脚本肯定是一个问题,但在我看来,我有所有正确的代码来允许这样做?

Pablo,首先,如果它向stage添加项目,而不是访问stage属性,也许你应该将player.swf下载到SDCard或应用程序本地存储,并从那里加载它?然后,您可以设置过期日期,之后将重新加载播放器。swf?

这是其他SO关于在SDCARD 上存储远程文件的问题的链接

最新更新