目标:
我正在尝试允许外部加载的swf文件彼此通信,这些文件是从设备本地加载的。我需要能够访问变量,函数和对象。我在这里从网上加载swf内容时实现了这一点:as3 externally loaded swf from network to control externally loaded swf from network
但是当我向用户提供从设备或在线加载的选项时 ...设备swf文件无法相互通信。特别是加载的swf无法从其父级获取信息。
以下是从在线加载时有效的代码:
var InsideConent:Object = this.parent.parent as Object; //// GIVES ACCESS TO "Content.swf"
var ItWorksNow:Sprite = MovieClip(InsideConent.TWO.content).ChildInTWO; ///
设备不喜欢此代码:
Security.allowDomain("*");
但是在网上运行时效果很好。下面是我在APP软件包本地加载时遇到的错误。
错误:
SecurityError:错误#3207:应用程序沙箱内容无法访问此功能。 在flash.system :: Security $ / allowDomain() 在Products_fla :: MainTimeline / frame1() 无法在此位置显示源代码。
问题: 有什么办法可以让安全域在AIR FOR ANDROID设备上本地工作,所以我不必更改我的代码吗? - 谢谢
答案 0 :(得分:5)
如果你在该行周围试一试,如果失败则不会抛出错误。这样,当您的代码可以在Web上运行并作为应用程序运行时。 (应用程序不需要允许域名b / c他们可以默认下载所有内容,这就是它失败的原因。)
try {Security.allowDomain("*");}catch (e) { };
答案 1 :(得分:1)
根据我的经验,您可以从另一个使用crossdomain xml正确配置的域加载远程swfs。 类似于:https://developers.arcgis.com/flex/guide/using-crossdomain-xml.htm
您可以使用代码加载swf, 但是如果你试图访问舞台,那么它将会失败。
此外,如果在您的原始项目中(托管在Web服务器上,您使用了常见的静态变量或singeltons,它将无法成功)。 我的解决方案是在那些接收我需要使用的对象的文件上添加函数。
答案 2 :(得分:0)
据我所知,您无法在AIR中加载swfs执行代码,您仍然可以使用多个swfs来显示资产,但任何代码都会产生错误。