繁体   English   中英

AS3将外部SWF加载到Loader中的问题

[英]AS3 Problem in loading external SWF into Loader

我有通过加载程序组件加载外部瑞士法郎的主要应用程序。 但是一些运行良好的SWF文件不会加载到主应用程序中。 当我尝试从主应用程序的fla加载该SWF文件之一时,出现错误,它正在寻找某些类。 通过此类的名称,它看起来像是已加载的swf的一部分,但由于swf已被编译并且运行良好,为什么在尝试由主应用程序加载时会寻找此类?

我没有发现任何涉及此类问题的信息。 任何帮助将不胜感激。

似乎您遇到了应用程序域冲突。 如果每个SWF中的类名冲突(例如swf1的类名为Main,swf2的类也称为Main),则可能会发生这种情况。

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

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

如果不是那样,则很可能在影片的第一帧上有一些代码在SWF初始化时执行(请在获取Event.COMPLETE之前先查看是否获取Event.INIT)。

通过从框架中删除代码,可以轻松解决此问题。

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

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的类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM