2010-03-25 30 views
1

當我完成一個補間之後,我想改變我的變量,然後只有我的鼠標移動纔會開始運行一些函數,但是看起來像onComplete函數立即啓動了所有的事情。是不是隻有在完成一個動作後,onComplete函數纔會運行?任何其他想在運行Tween.to代碼行後喜歡的方式,只有它會運行第二行來更改變量?TweenLite onComplete立刻開火?

stage.addEventListener(MouseEvent.MOUSE_MOVE, movevC); 

public static function showSection(obj:DisplayObject):void {; 
      var sect2X=((obj.stage.stageWidth/2)+(obj.stage.stageWidth/4))+lg.width; 
      var sect2Y=((obj.stage.stageHeight/2)-(obj.stage.stageHeight/4))+lg.height; 

      switch (obj.name) { 


       case "section2" : 
//onComplete run instantly?? 
        TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete:currentPage=2}); 
        /*if ((vC.x=sect2X)&&(vC.y=sect2Y)) { 
         currentPage=2; 
        }*/ 
        break; 
      } 
     } 
private function movevC(event:MouseEvent):void { 
if (currentPage==2) { 
       TweenLite.to(vC, 2, {x:mouseX, y:mouseY}); 
      } 
} 

回答

5

的onComplete應該是一個函數的引用,即名稱 你所需要的是這樣的

TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete:function(){currentPage=2}}); 

,甚至更好,定義一個函數,是不是「內聯」,然後引用這個

下面
+0

方面更好,事實上我認爲你的答案是最好的atm,因爲補間是在一個靜態函數裏面,它不能訪問其他函數。 – 2010-03-26 11:12:31

3

的onComplete期待的功能,因此,如果你把currentPage=2在函數內部它會工作,並把函數名中的onComplete。

喜歡:

TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete: changePageStatus}); 


private function changePageStatus():void { 
    currentPage = 2 
} 

你也可以直接寫函數到吐溫電話,但得到的混亂。

+0

我沒有嘗試前的樣子,但我不知道是不是因爲我使用公共靜態該函數,它返回我1120:訪問未定義的屬性changePageStatus。 – Hwang 2010-03-25 17:36:31

+0

你的問題的解決方案是在另一個答案,danjp寫入內聯函數,所以你可以在靜態函數內調用它。 – 2010-03-26 11:10:10

+0

這個答案在可讀性和標準 – danjp 2010-03-26 17:53:58

0

是我想出瞭解決方案,似乎並不那麼完美:/

TweenLite.to(vC, 2, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut}); 
       currentPage=2; 
       break; 


if ((vC.x==sect2X)&&(vC.y==sect2Y)&&(currentPage==2)) { 
      currentPage=21; 
     } else if (currentPage==21) { 
run something 
}