2010-01-23 6 views
1

Dans mon code ici:AS3 déclaration conidtional ne fonctionne pas

var manTimer:Timer = new Timer(1700,5); 
manTimer.addEventListener(TimerEvent.TIMER, moveMan); 
function moveMan(e:TimerEvent):void { 
    var manX:Tween = new Tween(man, "x", Regular.easeIn, man.x, man.x - 100, 1.5, true); 
} 

function startMan(e:MouseEvent):void { 
    manTimer.start(); 
    var manX:Tween = new Tween(man, "x", Regular.easeIn, man.x, man.x - 100, 1.5, true); 
} 

if(man.x > 589) { 
paper.btnElScorcho.addEventListener(MouseEvent.CLICK, startMan); 
paper.btnTheGoodLife.addEventListener(MouseEvent.CLICK, startMan); 
} 

Je suis en train de le faire de sorte que lorsque btnElScorcho ou btnTheGoodLife est cliqués ça va bouger mon « homme » mc sur sur la scène. Il commence à 590px et se termine à -10px. Cette partie fonctionne. Ce qui ne fonctionne pas, c'est mon instruction conditionnelle qui dit de ne déplacer le "man" que s'il est à la position x de 590 ou plus, parce que, quand l'un des deux boutons est de nouveau cliqué, je ne sais pas vouloir le faire sortir s'il est déjà là ou s'il déménage déjà. Donc, pour une raison quelconque, "man" bougera encore quand les boutons seront cliqués une deuxième fois et curieusement, "man" ne se déplacera que deux fois par rapport aux 5 fois habituelles dans la fonction. Peut-être que je peux changer l'instruction if pour vérifier si le bouton a déjà été cliqué par opposition à où "man" est?

Merci, Wade

Répondre

0

Il y a une légère idée fausse. addEventListener enregistrera la fonction de gestionnaire pour toujours, pas seulement pour un clic. Ce que vous voulez faire, c'est appeler addEventListener au début de votre programme une fois, et à la place vérifier la condition dans la fonction de gestionnaire de sorte que si elle est fausse, le code du gestionnaire est ignoré.

+0

Je pense que je comprends. Désolé, mais comment m'adresser à l'écriture? Je ne suis pas trop sûr. –

+0

Grattez ça, c'est compris. Merci beaucoup. –

Questions connexes