AS3 - 避免同时按下两个按钮

时间:2012-03-28 15:06:34

标签: actionscript-3 flash listeners simultaneous

我正在开发一个包含大量代码的游戏。可以在此处找到未完成的游戏版本:http://rainisfalling.co.za/sheep-jump-test/

有两个关键听众。一个人听大空跳的SPACEBAR,另一个听小型跳跃的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 个答案:

答案 0 :(得分:3)

在阅读之后,这可能看起来非常明显,但只需在函数do中添加一个侦听器 if(CTRL)smallJump 如果(空格键)bigJump

这种方式只发生一种情况......也考虑将其留在游戏中并将其整合到游戏中,我喜欢超级跳跃的想法:)。

答案 1 :(得分: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;
       }
}