2011-03-17 128 views
1

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

我没有发现任何会引用此类问题的内容。任何帮助将不胜感激。

+1

必须发布一些代码和相关的错误,以获得任何地方。 – Bosworth99 2011-03-17 14:55:20

回答

0

只是为了检查我做的,包含装载的只有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:无法访问空对象引用的属性或方法。 at src :: Dedo() at src :: Main()

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

+0

这是您引用不存在(但尚未)的属性时得到的常见错误。要进入孩子来源并检查Dedo() - 您的主应用程序可能没问题,但儿童swf中存在明显的问题。 – Bosworth99 2011-03-17 16:40:43

+0

感谢您的回复! 问题是我没有所有swf(也没有他们的类)的fla文件,并且swf的数量很大,所以它不可能检查所有那些有问题的swf的类,这些类可以独立运行,但可以'不会被加载到主应用程序中。 有没有通过主应用程序本身来解决这个问题的方法? 再次感谢您的帮助! – MeLi 2011-03-20 08:08:42

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)。

这可以很容易地通过从框架中删除代码来修复。