2016-12-26 4 views
2

Ich schreibe diesen Code, der Ihre Reaktionszeit testet und dann zum nächsten Frame weitergeht. Es zeigt eine Box und dann die Zeit zwischen dem Erscheinen der Box und dem Drücken von [A]. Heer ist mein CodeAnimate CC geht zum nächsten Frame mit gotoAndStop auskommentiert?

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

Aus irgendeinem Grund, wenn ich nur Spam die [A] -Taste, um zum nächsten Bild vorrücken wird. Warum passiert dies?!?! Mein 'gotoAndStop (4);' Befehl ist auskommentiert, so sollte es tun alles, aber es ist.

EDIT: Hier ist meine Fla-Datei: https://drive.google.com/open?id=0BxtLreFIVnSWR2VPSGdSaHZGaVk RAW CODE: https://docs.google.com/document/d/1GRZIaKAdRNu3z3aPjjXNcgqMl2BhR-ZBT6gU7OeSbWQ/edit?usp=sharing

+0

Das ist seltsam. Sie haben nirgendwo sonst einen Zuhörer? Wie im quadratischen Movieclip? –

+0

Ich glaube nicht, die einzigen zwei Zuhörer, die ich habe, sind auf meinem Code. Ich kann versuchen, meine Projektdatei hochzuladen, wenn das hilft? – user2789610

+0

Kann es passieren, wenn Sie eine andere Taste drücken? Oder nur A? –

Antwort

2

Auf einem Ihrer Bilder, die Sie einen Ereignis-Listener für Tastendrücke auf die Bühne hinzugefügt. Das ist wahrscheinlich, wo dein Problem ist. Wenn Sie also eine beliebige Taste drücken, ruft sie die pressed-Funktion sowie die Tpressed-Funktion auf. Und da der Schlüssel, nach dem in jeder Funktion gesucht wird, "A" ist, führen beide Funktionen ihre if Blöcke aus. Und beide if Blöcke rufen eine gotoAndStop Methode auf.

Ohne genau zu wissen, was Sie im großen Bild erreichen möchten, könnte dieses Problem behoben werden, indem Sie den Ereignislistener für die pressed-Funktion entfernen, wenn Sie diesen Rahmen verlassen.

könnte wie folgt aussehen:

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

Danke! Ich werde meinen Code bearbeiten und bald wiederkommen. Nochmals vielen Dank. – user2789610

Verwandte Themen