2010-03-25 3 views
1

Après avoir terminé une interpolation, je voudrais changer mes variables, alors seulement mon mouvement de la souris aurait commencé à exécuter certaines fonctions, mais il semble que la fonction onComplete a immédiatement déclenché toutes les choses. La fonction onComplete ne fonctionne-t-elle pas seulement après une action? N'importe quelle autre manière à aimer après avoir exécuté la ligne de code de Tween.to, seulement elle courra la 2ème ligne changeant une variable?TweenLite onComplètement allumé instantanément?

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}); 
      } 
} 

Répondre

5

onComplete doit être une référence à une fonction-à-dire le nom ce que vous devez pour quelque chose comme ça

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

ou mieux encore, définir une fonction qui ne sont pas « en ligne », puis faire référence à ce

+0

en fait, je pense que votre réponse est la meilleure atm parce que l'interpolation est dans une fonction statique, il ne peut pas accéder à d'autres fonctions. –

3

onComplete attend une fonction, il travaillerait si vous mettez la currentPage=2 dans une fonction et de mettre le nom de fonction à l'intérieur onComplete.

aime:

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


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

Vous pouvez aussi écrire la fonction directement dans l'appel Tween, mais obtenir de messier.

+0

j'ai essayé le chemin, mais je ne suis pas sûr est-ce parce que je utilise statique public cette fonction, elle me renvoie 1120: Accès de la propriété indéfinie changePageStatus. – Hwang

+0

la solution à votre problème est dans une autre réponse, danjp a écrit la fonction inline afin que vous puissiez l'appeler dans la fonction statique. –

+0

cette réponse est meilleure en termes de lisibilité et les normes – danjp

0

ci-dessous est la solution que je suis venu avec, ne semble pas si parfait:/

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 
} 
Questions connexes