2010-03-25 28 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 
}