AS3 gotoAndStop事件仅在加载外部文件后触发enterFrame

时间:2016-11-28 14:11:04

标签: actionscript-3 events frame

我们有一个复杂的AS3项目,可以加载各种外部文件。我们发现,一旦发生这种情况,gotoAndStop命令(不一定在外部加载的文件上)会触发我们附加到主时间轴的EnterFrame事件。这导致了一些非常奇怪的结果,偶尔会完成崩溃。

我们发现的示例向我们展示了我们遇到的问题:

(一个地方的代码)

trace("goto 1")
tClip.gotoAndStop("on")
trace("goto 1 done")

(其他地方的代码)

trace("goto 2")
tClip2.gotoAndStop("off")
trace("goto 2 done")

输出:

//goto 1
//goto 2
//goto 2 done
//goto 1 done

请注意,如果我们之前已经下载了一些外部文件,则此行为似乎只会发生。否则我们得到

输出:

//goto 1
//goto 1 done
//goto 2
//goto 2 done

正如我们所期望的那样。

我们提出的工作方法是将所有gotoAndStop命令放入一个新函数中:

package {
    public function fGoToFrame(tClip:MovieClip, tFrame:*):void {
        pIgnoreFrameEventFromGoToAndStop = true;
        tClip.gotoAndStop(tFrame);
        pIgnoreFrameEventFromGoToAndStop = false;
    }
    // frame event:
    public function fAction(e:Event):void {
        if (! pIgnoreFrameEventFromGoToAndStop)
        {
            //...

        }
    }
}

这似乎可以防止任何错误,但它并不完全令人满意。我想知道为什么gotoAndStop在子movieClip上根本就会在根sprite上触发一个帧事件!有没有办法在不使用这个黑客的情况下阻止它?

0 个答案:

没有答案