Actionscript 3 AS3将外部SWF加载到加载程序中的问题

Actionscript 3 AS3将外部SWF加载到加载程序中的问题,actionscript-3,flash,external,loader,Actionscript 3,Flash,External,Loader,我有一个通过Loader组件加载外部swf的主应用程序。但是一些独立运行良好的swf没有加载到主应用程序中。当我试图从主应用程序的fla加载其中一个swf时,它给出了一个错误,它正在寻找一些类。根据这个类的名称,它看起来像是加载的swf的一部分,但作为已经编译并运行良好的swf,为什么它在试图由主应用程序加载时寻找这个类 我没有找到任何与这类问题相关的东西。非常感谢您的帮助。请检查我制作的fla文件,该文件仅包含加载程序组件和加载代码: var loader:Loader = new Loade

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


我没有找到任何与这类问题相关的东西。非常感谢您的帮助。

请检查我制作的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的类。

只是为了检查我制作的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的类。

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

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

loader.load(new URLRequest("g.swf"), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain)));
如果不是这样,您很可能在SWF初始化时执行的电影的第一帧上有一些代码(请在获取Event.COMPLETE之前查看是否获取Event.INIT)


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

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

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

loader.load(new URLRequest("g.swf"), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain)));
如果不是这样,您很可能在SWF初始化时执行的电影的第一帧上有一些代码(请在获取Event.COMPLETE之前查看是否获取Event.INIT)


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

必须发布一些代码和相关错误才能在这方面取得进展。必须发布一些代码和相关错误才能在这方面取得进展。这是引用(尚未)存在的属性时出现的常见错误。必须进入子源并检查Dedo()-您的主应用程序可能很好,但子swf中存在一个明显的问题。感谢您的回复!问题是,我没有所有swf的fla文件(也没有它们的类),而且有大量的swf,所以不可能完全检查所有这些有问题的swf的类,它们自己玩得很好,但无法加载到主应用程序中。有没有办法通过主应用程序本身解决这个问题?再次感谢你的帮助!这是引用(尚未)存在的属性时出现的常见错误。必须进入子源并检查Dedo()-您的主应用程序可能很好,但子swf中存在一个明显的问题。感谢您的回复!问题是,我没有所有swf的fla文件(也没有它们的类),而且有大量的swf,所以不可能完全检查所有这些有问题的swf的类,它们自己玩得很好,但无法加载到主应用程序中。有没有办法通过主应用程序本身解决这个问题?再次感谢你的帮助!