2012-03-28 2 views
0

Я разрабатываю игру с большим количеством кода. Незавершенную версию игры можно найти здесь: http://rainisfalling.co.za/sheep-jump-test/AS3 - Избегайте одновременного нажатия двух кнопок

Есть два Key Listeners. Один слушает ПРОБЕЛ для большого прыжка, другой слушает CTRL для небольшого прыжка. Проблема, которую я испытываю, заключается в том, что, когда две кнопки нажаты точно в одно и то же время, происходят оба действия прыжка, что приводит к супер большому прыжку. (. Сочетание двух высот прыжка)

Вот упрощенная версия моего кода:

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 
} 

ответ

2

Объединить прыжки в один обработчик:

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

Большое спасибо! Я действительно должен был подумать об этом ... мой мозг был обжарен. – CptRayMar

3

Это, вероятно, будет казаться очень очевидным после того, как вы читаете это, но просто добавить один слушатель в пределах функция сделать если (CTRL) smallJump еще если (ПРОБЕЛ) bigJump

Таким образом, только одно условие бывает ... также рассмотреть вопрос о выходе его и интеграции, что в игру, я люблю супер идея прыгать :).

+0

не могу поверить, что я не думаю о том, что -_-. Ха-ха, я подумаю, может быть, каждые несколько сотен очков игрок получит право на один супер-прыжок. : D – CptRayMar

Смежные вопросы