如何清理keyDown数组

时间:2013-12-30 04:31:54

标签: javascript user-input keyboard-events keydown

我正在试图建立一个游戏,并添加了一些甚至是听众,以找出哪些键已关闭。我将其堆叠成一个数组,并使用该数组来操纵游戏状态。

如果这是错误的做法,请随意对此进行评论,但我只想暂时假设这是一个的方式罗马。

我的问题;当有人一次按下多个按键时(或者在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

1 个答案:

答案 0 :(得分:0)

看起来,用JS这是不可能的。

处理这个问题的最好方法是什么都不做。

或者你可以考虑跟踪打入的键总数,如果它超过一定数量(很难说有多少)你可以删除第一个按下的键,但这更像是用一些磁带修补泄漏的桶