AS3 - gotoAndStop立即采取行动

时间:2011-02-25 15:56:52

标签: actionscript-3

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

我常常使用代码:

gotoAndStop(5);
trace(box); //where box is a movie on 5th frame

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

2 个答案:

答案 0 :(得分:7)

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

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

function update() {
    trace(box); // outputs [object MovieClip]
}

请注意,addFrameScript的第一个参数是帧号,但它是从0开始的,即0表示帧1,1表示帧2,等等......第二个参数是您要调用的函数。

答案 1 :(得分:5)

没有简单的方法可以做到这一点。

你需要做的是

  • 在帧渲染时设置侦听器

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

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

与as2保持一致的主要原因之一。 不是说as2更好,只是在一些事情上更好,这就是其中之一。我对此的看法是,as3并不是真正意义上的时间表。

用你做的as2

gotoAndStop(5);
trace(box);

使用as3,您需要等待时间线渲染。

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

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