AS3:为什么Event.ADDED_TO_STAGE调用了2次

时间:2014-05-02 19:07:36

标签: actionscript-3 flash

我只是因为好奇而问这个问题。 在as3中,在使用Event.ADDED_TO_STAGE侦听器时,它会自动调用2次。 我已用痕迹对此进行了测试。我已经检查过我是否添加了2次动画片,但没有这样的事情。我只添加了一次movieclip。

如果我在听众的功能开始时删除了这个监听器,那么这个问题就不会发生了。举一个只跟踪一次的例子:

addEventListener(Event.ADDED_TO_STAGE,added);

public function added(e:Event){
  removeEventListener(Event.ADDED_TO_STAGE,added);
  trace("MovieClip is added");
}

这是两次追踪的例子:  的addEventListener(Event.ADDED_TO_STAGE,添加);

public function added(e:Event){
  trace("MovieClip is added");
}

如果有人说出原因,我们会非常感激。

谢谢

-Ozan

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

我是如何解决的:

我将我的加载命令放在ADDED_TO_STAGE事件中。

像这样:

    var mcLoader:MovieClipSWFLoader = new MovieClipSWFLoader();

    public function init():void
    {                       
        this.addEventListener(Event.ADDED_TO_STAGE, selfLoad);

        mcLoader.x = 10;
        mcLoader.y = 10;            
        //THIS is important, because when you load, it is automatically added
        mcLoader.autoLoad = false;
        mcLoader.source = "mySwf.swf";
    }

    private function selfLoad(e:Event = null):void
    {
        this.addEventListener(Event.COMPLETE, setLoaded);
        this.addEventListener(IOErrorEvent.IO_ERROR, loadingErrorHandler);

        mcLoader.load();
    }

它对我有用。