AS3 - Избегайте одновременного нажатия двух кнопок - PullRequest
0 голосов
/ 28 марта 2012

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

Есть два ключевых слушателя. Один слушает пробел для большого прыжка, другой слушает 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 ]

3 голосов
/ 28 марта 2012

Это, вероятно, покажется действительно очевидным после прочтения, но просто добавьте одного слушателя в функцию do, если (CTRL) smallJump else if (SPACEBAR) bigJump

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

2 голосов
/ 28 марта 2012

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

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;
       }
}
...