我正在构建一个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 上存储远程文件的问题的链接