2012-03-28 63 views
0

我正在开发一个具有大量代码的游戏。未完成的游戏版本可以在这里找到:http://rainisfalling.co.za/sheep-jump-test/AS3 - 避免同时按下两个按钮

有两个关键听众。一个听大空间的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

结合跳进一个处理程序:

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 2012-03-28 22:07:42

3

这可能会显得你读它之后,只是内添加一个监听真的很明显功能做 如果(CTRL)smallJump 否则,如果(空格键)bigJump

这样,只有一个条件发生......也考虑把它留在和整合,在游戏,我喜欢超跃想法:)。

+0

不能相信我没想到的,-_-。哈哈,我会考虑的,也许每隔几百分钟,球员就会获得一次超级跳投的机会。 :D – CptRayMar 2012-03-28 22:07:05