当前位置:  开发笔记 > 编程语言 > 正文

如何使用Flash(AS3)从远程域调用Flex SWF?

如何解决《如何使用Flash(AS3)从远程域调用FlexSWF?》经验,为你挑选了1个好方法。

我在http://www.a.com/a.swf上有一个Flex swf .我在另一个尝试加载SWF的doamin上有一个flash代码:

_loader = new Loader();
var req:URLRequest = new URLRequest("http://services.nuconomy.com/n.swf");
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderFinish);
_loader.load(req);

在onLoaderFinish事件中,我尝试从远程SWF加载类并创建它们:

_loader.contentLoaderInfo.applicationDomain.getDefinition("someClassName") as Class

当此代码运行时,我得到以下异常

SecurityError: Error #2119: Security sandbox violation: caller http://localhost.service:1234/flashTest/Main.swf cannot access LoaderInfo.applicationDomain owned by http://www.b.com/b.swf.
    at flash.display::LoaderInfo/get applicationDomain()
    at NuconomyLoader/onLoaderFinish()

有没有办法让这段代码有效?



1> Theo..:

这些都在第550页的Adobe Flex 3编程ActionScript 3 PDF中进行了描述(第27章:Flash Player安全/跨脚本编写):

如果使用ActionScript 3.0编写的两个SWF文件是从不同的域提供的 - 例如http://siteA.com/swfA.swf和http://siteB.com/swfB.swf-则默认情况下,Flash Player不会允许swfA.swf脚本swfB.swf,swfB.swf脚本swfA.swf脚本.SWF文件通过调用Security.allowDomain()为来自其他域的SWF文件授予权限.通过调用Security.allowDomain("siteA.com"),swfB.swf从siteA.com获取SWF文件的脚本权限.

它继续更详细,图表和所有.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有