2012-03-28 14 views
0

Ich entwickle ein Spiel mit einer großen Menge Code. Die unfertige Version des Spiels finden Sie hier: http://rainisfalling.co.za/sheep-jump-test/AS3 - Zwei Tasten gleichzeitig drücken

Es gibt zwei Key Listeners. Man hört auf die Leertaste für den großen Sprung, der andere hört auf CTRL für den kleinen Sprung. Das Problem, das ich habe, ist, dass, wenn die zwei Tasten genau zur gleichen Zeit gedrückt werden, beide Sprungaktionen auftreten, was zu einem super großen Sprung führt. (. Eine Kombination der beiden Sprunghöhen)

Hier ist eine vereinfachte Version von meinem Code:

addEventListener(KeyboardEvent.KEY_DOWN, bigJump); 

function bigJump(e:KeyboardEvent){ 
//check to see that keycode = SPACEBAR 
//code to do the actual jump 
//also remove the event listeners for the jumps while in the air 
} 


addEventListener(KeyboardEvent.KEY_DOWN, smallJump); 

function smallJump(e:KeyboardEvent){ 
//check to see that keycode = CTRL 
//code to do the actual jump 
//also remove the event listeners for the jumps while in the air 
} 

Antwort

2

Kombinieren Sie springt in einen Handler:

addEventListener(KeyboardEvent.KEY_DOWN, jump); 

function jump(e:KeyboardEvent){ 
     switch(e.keyCode){ 
     case 32: //<Space> 
     //Big jump code 
     break; 
     case 17: //<Ctrl> 
     //Small jump code 
     break; 
     } 
} 
+0

Vielen Dank! Ich hätte wirklich daran denken sollen ... mein Gehirn wurde gebraten. – CptRayMar

3

Dies ist wahrscheinlich wirklich offensichtlich gehen scheint, nachdem Sie sie lesen, aber nur einen Zuhörer hinzufügen innerhalb der Funktion tun if (CTRL) smallJump else if (LEER) bigJump

auf diese Weise nur eine Bedingung geschieht ... betrachten auch sie zu verlassen und zu integrieren, dass in dem Spiel, Ich mag die Super-Sprung Idee :).

+0

Kann nicht glauben, dass ich nicht daran denken, habe -_-. Haha, ich werde darüber nachdenken, vielleicht alle paar hundert Punkte bekommt der Spieler das Privileg eines Supersprungs. : D – CptRayMar