gpt4 book ai didi

Javascript keydown 事件仅在最多两个键时触发

转载 作者:行者123 更新时间:2023-12-02 18:52:36 26 4
gpt4 key购买 nike

我有一个用于捕获和注册箭头键输入的系统。它一直有效到一定程度。只要按下两个或更少的键,它就会正确记录同时按下多个键的情况。如果第三个或第四个按钮同时按下,它将停止触发按键事件。请参阅this jsFiddle并查看控制台的输出。

这是浏览器设置的限制还是我的代码错误?任何帮助将不胜感激。

这是代码:

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);
}

最佳答案

虽然这不一定是我的实现方式,但我认为您的实现效果很好。

请记住这一点:

不同的键盘将有不同的按键总线。
在更高质量的键盘上,您可能会在键盘的每个“区域”上获得更多可以同时按下的按键...
但根据键盘是什么、按键如何打印、区域如何划分等等,您将拥有更多或更少的按键,这些按键可以在任何给定的地方同时使用。

例如,当我玩 FPS 游戏和类似 Action 游戏时,使用常规映射,我无法在键盘上同时蹲下、向前+向左移动、拉起排行榜并重新加载。

无论我最后做什么都会被忽略。

关于Javascript keydown 事件仅在最多两个键时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15669410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com