2016-12-26 2 views
2

J'écris ce code qui teste votre temps de réaction et passe ensuite à la trame suivante. Il montre une boîte et ensuite le temps de la différence entre le moment où la boîte est apparue et quand l'utilisation appuie sur [A]. Heer est mon codeAnimate CC passe à l'image suivante avec gotoAndStop commenté?

import flash.utils.Timer; 
import flash.events.Event; 
import flash.utils.getTimer; 

stop(); 
    var canPress = false; 
    var startClock:Timer = new Timer(4000+Math.random()*6000, 1); 
    grbox.y = -500; 
    startClock.start(); 
    var startTime:int = 0; 

function displayBox(evt:Event):void{ 
    canPress = true; 
    grbox.y = 143; 
    var startTime:int = getTimer(); 
} 

function Tpressed(e:KeyboardEvent):void 
{ 
    if(e.keyCode==Keyboard.A){ 
     if(canPress==true){ 
     var endTime:int = getTimer(); 
     score1 = endTime-startTime; 

     if(score2<0){ 
      //gotoAndStop(3); 
     } 
     else{ 
      //gotoAndStop(4); 
     } 
    } 
    } 

} 

stage.addEventListener(KeyboardEvent.KEY_DOWN, Tpressed); 
startClock.addEventListener(TimerEvent.TIMER, displayBox); 

Pour une raison quelconque, si je viens de spam sur le bouton [A] il avancera à l'image suivante. Pourquoi cela arrive-t-il?!?! Mon 'gotoAndStop (4);' commande est commentée donc il devrait faire quoi que ce soit, mais il est.

EDIT: Voici mon fichier fla: https://drive.google.com/open?id=0BxtLreFIVnSWR2VPSGdSaHZGaVk CODE RAW: https://docs.google.com/document/d/1GRZIaKAdRNu3z3aPjjXNcgqMl2BhR-ZBT6gU7OeSbWQ/edit?usp=sharing

+0

C'est bizarre. Vous n'avez pas d'auditeur ailleurs? Comme dans le clip carré? –

+0

Je ne pense pas, les deux seuls auditeurs que j'ai sont sur mon code. Je peux essayer de télécharger mon fichier de projet si cela aide? – user2789610

+0

Est-ce que cela se produit si vous appuyez sur un autre bouton? Ou juste A? –

Répondre

2

Sur l'un de vos cadres que vous avez ajouté un écouteur d'événement pour les presses clés à la scène. C'est probablement là que votre problème est. Ainsi, lorsque vous appuyez sur une touche, elle appelle la fonction pressed ainsi que la fonction Tpressed. Et puisque la clé qui est vérifiée dans chaque fonction est "A", les deux fonctions exécutent leurs blocs if. Et les deux blocs if appellent une méthode gotoAndStop. Sans savoir exactement ce que vous essayez d'accomplir dans la grande image, ce problème peut être résolu en supprimant l'écouteur d'événement pour la fonction pressed lorsque vous quittez cette image.

pourrait ressembler à:

function pressed(e:KeyboardEvent):void 
{ 
    if(e.keyCode==Keyboard.A){ 
     gotoAndStop(Math.round(Math.random()+2)); 
     // remove the event listener since we are leaving this frame and you apparently only want this function to work on this frame 
     stage.removeEventListener(KeyboardEvent.KEY_DOWN, pressed); 
    } 
} 
+0

Merci! Je vais modifier mon code et revenir bientôt. Encore une fois, merci beaucoup. – user2789610