Actionscript 3 AS3-立即采取行动启动并停止

Actionscript 3 AS3-立即采取行动启动并停止,actionscript-3,Actionscript 3,我正在从AS2迁移到AS3,可能有很多ppl发现了这种不兼容性: 我经常使用这样的代码: gotoAndStop(5); trace(box); //where box is a movie on 5th frame 在AS3中,最简单的方法是什么。不容易做到这一点 你需要做的是 设置帧渲染时的侦听器 告诉它转到所述帧(5) 强制渲染尽快进行。使无效 留在as2的首要原因之一。 不是说as2更好,只是在一些事情上更好,这就是其中之一。我的观点是,as3并不是真的要很好地处理时间线 用as

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

我经常使用这样的代码:

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

在AS3中,最简单的方法是什么。

不容易做到这一点

你需要做的是

  • 设置帧渲染时的侦听器

  • 告诉它转到所述帧(5)

  • 强制渲染尽快进行。使无效

留在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的日子里,我曾经在一部电影的不同画面中拥有不同的资产,但在AS3中这样做太复杂了,享受不到任何好处。因此,虽然这会起作用,但我建议大家研究一种完全不同的解决方案。或者坚持使用as2。

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

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

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

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

AS3必须确保它不会在原始帧上的动作上为其余部分释放上下文,这就是为什么它会在所有动作结束时进行移动。。。我想这就是JIT编译的价格。