AS3将外部SWF加载到Loader中时出现问题

时间:2011-03-17 12:39:58

标签: actionscript-3 flash external loader

我有主应用程序通过Loader组件加载外部swf。但是一些自行运行良好的SWF不会加载到主应用程序中。当我试图从主应用程序的fla加载其中一个swf时,它给出了错误,它正在寻找一些类。通过这个类的名称,它看起来像是加载的swf的一部分,但是作为swf已经编译并且运行良好为什么当它试图由主应用程序加载时它正在寻找这个类?

我没有找到任何可以引用此类问题的内容。任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

您似乎遇到了应用程序域冲突。如果你在每个SWF中都有冲突的类名,就会发生这种情况(例如,swf1有一个名为Main的类,swf2也有一个名为Main的类)。

要解决此问题,请将SWF加载到新的应用程序域中:

loader.load(new URLRequest("g.swf"), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain)));

如果不是这样,你很可能在初始化SWF时执行的电影的第一帧上有一些代码(看看你在获得Event.COMPLETE之前是否得到Event.INIT)。

通过从框架中删除代码可以很容易地解决这个问题。

答案 1 :(得分:0)

仅仅为了检查我制作的fla文件只包含Loader组件和加载代码:

var loader:Loader = new Loader();
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingFunc);
loader.load(new URLRequest("g.swf"));

function loadingFunc(event:Event):void{
    var li:LoaderInfo = event.target as LoaderInfo;
    var mc:MovieClip = MovieClip(li.content)
}

此代码来自测试文件。 但即使这样,它仍然在寻找一些似乎是外部加载的swf的类。 错误是这样的:

TypeError:错误#1009:无法访问空对象引用的属性或方法。     在src :: Dedo()     在src :: Main()

我的主应用程序中没有这样的类。所以它可能只是来自外部swf的类。