2011-02-25 58 views
5

我從AS2轉移到AS3,可能許多脂肪酶之前發現這種不兼容:AS3 - gotoAndStop立即行動

我以前經常這樣的代碼:

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

什麼是最簡單的方法如何在AS3中做到這一點。

回答

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。

+0

AS3必須確定它在原始框架上的動作沒有鬆散的情況,這就是爲什麼它會在所有結束時執行動作......這是我猜測的JIT編譯的價格。 – Oldes

7

有一個簡單的方法來解決這個問題,但沒有證件:

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

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

請注意addFrameScript第一個參數是幀數,但它是從0開始,即0幀1,1是第2幀等等......第二個參數是你想要調用的函數。