0
我有一個用於捕獲和註冊箭頭鍵輸入的系統。它一直工作到一定程度。只要按下兩個或更少按鍵,它就可以正確記錄是否同時按下多個按鍵。如果三分之一或四分之一被按在一起,它會停止發射keydown事件。請參閱this jsFiddle並查看控制檯的輸出。Javascript keydown事件最多隻能觸發兩個鍵
這是瀏覽器設置的限制還是我的代碼錯誤?任何幫助將非常感激。
下面是代碼:
var keysPressed = {
37: false,
38: false,
39: false,
40: false
};
var LEFT = 'left';
var RIGHT = 'right';
var UP = 'up';
var DOWN = 'down';
var ON = '_on';
var OFF = '_off'
document.addEventListener('keydown', function(evt){
var keycode = evt.keyCode;
if(!checkKeyPressed(keycode)){
keysPressed[keycode] = true;
switch(keycode){
case 37:
registerInput(LEFT+ON);
break;
case 38:
registerInput(UP+ON);
break;
case 39:
registerInput(RIGHT+ON);
break;
case 40:
registerInput(DOWN+ON);
break;
default:
break;
}
}
});
document.addEventListener('keyup', function(evt){
var keycode = evt.keyCode;
if(checkKeyPressed(keycode)){
keysPressed[keycode] = false;
switch(keycode){
case 37:
registerInput(LEFT+OFF);
break;
case 38:
registerInput(UP+OFF);
break;
case 39:
registerInput(RIGHT+OFF);
break;
case 40:
registerInput(DOWN+OFF);
break;
default:
break;
}
}
});
function checkKeyPressed(keycode){
if (keysPressed === null) {
return false;
} else return keysPressed[keycode];
}
function registerInput(inputType){
console.log(keysPressed);
//Game.Engine.playerInput(inputType);
}
好的謝謝。所以這是鍵盤的限制。 – RobotEyes 2013-03-27 21:16:36
我可以讓所有四個同時在控制檯對象中回顯「true」,所以這是一個肯定的答案。 – Norguard 2013-03-27 21:24:11