我以前从未遇到过这个问题,看起来真奇怪。我正在构建一个嵌入并显示.swf文件的Air应用程序(直接AS3无flex)。 这是我的代码:
public class Something extends Sprite
{
private var loader:Loader;
public function Something():void
{
this.addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
loader = new Loader();
var appDomain:ApplicationDomain = new ApplicationDomain();
var context:LoaderContext = new LoaderContext(false, appDomain);
loader.load(new URLRequest("test.swf"), context);
trace("hello");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}
private function loaded(e:Event):void
{
trace(loader.contentLoaderInfo.sameDomain);
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaded);
addChild(loader.content);
}
}
这不仅不会像我想要的那样将.swf文件添加到显示列表中,而且它似乎一遍又一遍地运行。 “hello”填充跟踪语句中的输出窗口,就像每帧运行一样。
代码加载.jpg就好了,因此它必须是特定于flash文件的问题。如果发生冲突而不是这个奇怪的循环构造函数,我会认为会遇到某种安全错误。
有没有人有任何想法导致这种行为?
更新:我终于找到了 - flash crash when loading external swf (with code example this time around)
所以我认为发生的事情是因为两个flash文件共享同一个应用程序域,并且它们都有“Main.as”作为主类文件,它一遍又一遍地运行构造函数。
我仍然遇到麻烦,我已更新上面的代码,以显示我尝试使用不同的应用程序域加载外部.swf失败。
我现在在输出窗口中得到它:
hello
[Fault] exception, information=TypeError: Error #1009: Cannot access a property or method of a null object reference.
有什么想法吗?
答案 0 :(得分:0)
嗯,
您可能已将此文件发布为“test.swf”,并且您正在加载“test.swf”,因此您递归重新加载该文件所在的同一文件?
答案 1 :(得分:0)
请确保您的加载程序的主类与加载的swf的主类
不一致