我正在试图建立一个游戏,并添加了一些甚至是听众,以找出哪些键已关闭。我将其堆叠成一个数组,并使用该数组来操纵游戏状态。
如果这是错误的做法,请随意对此进行评论,但我只想暂时假设这是一个的方式罗马。
我的问题;当有人一次按下多个按键时(或者在PS2电路板的情况下很多按键),这些情况可能会被卡住"在数组中,虽然没有失败。
如何修剪此数组,而不删除当时实际关闭的键?
var keysDown = []; // this is where I toss all they keyCodes
function keyDown(e) {
e = e || event;
if (keysDown.indexOf(e.keyCode) < 0) {
keysDown.push(e.keyCode)
console.log(keysDown);
};
};
function keyUp(e) {
e = e || event;
if (keysDown.indexOf(e.keyCode) > -1) {
keysDown.splice(keysDown.indexOf(e.keyCode), 1);
console.log(keysDown);
};
};
document.onkeydown = keyDown;
document.onkeyup = keyUp;
.edit:Fiddled it。
答案 0 :(得分:0)
看起来,用JS这是不可能的。
处理这个问题的最好方法是什么都不做。
或者你可以考虑跟踪打入的键总数,如果它超过一定数量(很难说有多少)你可以删除第一个按下的键,但这更像是用一些磁带修补泄漏的桶