在Air应用程序中加载外部.swf文件导致循环构造函数

时间:2011-04-19 21:04:18

标签: actionscript-3 air loader

我以前从未遇到过这个问题,看起来真奇怪。我正在构建一个嵌入并显示.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.

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

嗯,

您可能已将此文件发布为“test.swf”,并且您正在加载“test.swf”,因此您递归重新加载该文件所在的同一文件?

答案 1 :(得分:0)

请确保您的加载程序的主类与加载的swf的主类

不一致