我发现这种不兼容性之前,我正在从AS2迁移到AS3,可能还有很多人:
我常常使用代码:
gotoAndStop(5);
trace(box); //where box is a movie on 5th frame
在AS3中如何做到这一点的最简单方法是什么。
答案 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。