AS3 - gotoAndStop立即采取行动

Old*_*des 5 actionscript-3

我发现这种不兼容性之前,我正在从AS2迁移到AS3,可能还有很多人.

我常常使用以下代码:

gotoAndStop(5);
trace(box); //where box is a movie on 5th frame
Run Code Online (Sandbox Code Playgroud)

在AS3中如何做到这一点最简单的方法是什么.

Chr*_*ris 7

有一种简单的方法可以解决这个问题,但它没有记录:

addFrameScript(1, update);
gotoAndStop(2);

function update() {
    trace(box); // outputs [object MovieClip]
}
Run Code Online (Sandbox Code Playgroud)

请注意,addFrameScript的第一个参数是帧编号,但它是基于0的,即0是帧1,1是帧2,等等......第二个参数是您要调用的函数.


Dan*_*iel 5

没有简单的方法来做到这一点.

你需要做的是

  • 在帧渲染时设置侦听器

  • 告诉它去上述框架(5)

  • 强制渲染尽快发生 stage.invalidate

.

与as2呆在一起的主要原因之一.不是说as2更好,只是在一些事情上更好,这就是其中之一.我对此的看法是as3并不是真正意味着很好地处理时间表.

用as2你做的

gotoAndStop(5);
trace(box);
Run Code Online (Sandbox Code Playgroud)

使用as3,您需要等待时间轴渲染.

stage.addEventListener(Event.RENDER, onRenderStage);
protected function onRenderStage(ev:Event):void {
    trace(this['box']);
}
gotoAndStop(5);
stage.invalidate();
Run Code Online (Sandbox Code Playgroud)

我曾经在我的as2天中在一个MovieMlip的不同帧中拥有不同的资产,但是在AS3中这样做太复杂了,无法享受任何好处.因此,虽然这将有效,但我建议完全考虑不同的解决方案.或坚持as2.