Javascript 为什么CraftyJS/Chrome会限制并发按键事件的数量?
我正在尝试开发一款使用CraftyJS的游戏。我正在使用Javascript 为什么CraftyJS/Chrome会限制并发按键事件的数量?,javascript,google-chrome,keyboard,keyboard-events,craftyjs,Javascript,Google Chrome,Keyboard,Keyboard Events,Craftyjs,我正在尝试开发一款使用CraftyJS的游戏。我正在使用 狡猾的0.7.1 铬50.0.2661.94 视窗10 A 2016年戴尔XPS15 我注意到键盘事件的处理方式有些奇怪。 我猜这其中很大一部分与Chrome有关,甚至可能与Chrome有关 我的物理键盘,而这种狡猾只与我 使用它的API 首先,这是我的SSCCE。此代码在按键时将按键添加到按键数组中,在释放按键时将其删除,并每秒注销该数组 <!DOCTYPE html> <html lang="en"> &l
- 狡猾的0.7.1
- 铬50.0.2661.94
- 视窗10
- A 2016年戴尔XPS15李>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>keyTest</title>
<script src="../crafty.js"></script>
<script>
window.onload = function(){
Crafty.init(window.innerWidth, window.innerHeight, document.getElementById('game'));
var keys = [];
var keyDown = function(e){
console.log("KeyDown " + e.key);
keys.push(e.key);
};
var keyUp = function(e){
console.log("KeyUp " + e.key);
keys.splice(keys.indexOf(e.key), 1);
};
Crafty.e("Keyboard").bind("KeyUp", keyUp).bind("KeyDown", keyDown);
Crafty.e("Delay").delay(function(){console.log(keys)}, 1000, -1);
};
</script>
</head>
<body>
<div id="game"></div>
</body>
</html>
关键测试
window.onload=函数(){
Crafty.init(window.innerWidth、window.innerHeight、document.getElementById('game'));
var键=[];
var keyDown=功能(e){
console.log(“KeyDown”+e.key);
按键。按(e键);
};
var keyUp=功能(e){
控制台日志(“KeyUp”+e.key);
键。拼接键(键。索引键(e键),1);
};
狡猾的.e(“键盘”).bind(“KeyUp”,KeyUp)。bind(“KeyDown”,KeyDown);
Delay(function(){console.log(keys)},1000,-1);
};
我注意到一些奇怪的行为:
- 首先,看起来Crafty一次只能识别四个字母的按键,除非它们可以用右手和左手打字。例如,一次按住ASDFE会导致:
无论我如何用力敲击,E键都无法识别。但是,例如,如果我按下ASDFJKL,我会看到:[65、83、68、70]
[65,83,68,70,74,75,76]
- 一次只能识别两个箭头键,除非第三个是向下箭头键。例如,按LEFT、UP、RIGHT可生成:
,但按LEFT-DOWN-RIGHT可生成:[37,38]
[37,39,40]
编辑:我怀疑是键盘本身(或操作系统)未能发送这些键盘事件。但我仍在寻找一个好方法来证实这一点 正如@David所发现的,这个问题被称为: “重影”是指当同时按下多个键时,某些键盘键无法工作的问题。那些没有出现在电脑上或似乎已经消失的按键被称为“幻影”。在大多数键盘上,甚至一些被明确宣传为“反鬼影”的键盘上,三种组合键都会出现这种情况。想象一下,在玩你最喜欢的电子游戏时,你不能(比如说)斜着跑,同时发射武器(比如同时按下a、w和g)。这是大多数现有键盘内部设计的结果
由于不是每个消费者都有游戏键盘(特别是没有这个问题),我想你唯一能做的就是设计你的游戏,而不需要同时按下三个或更多的键。闻起来像是键盘鬼影。试着运行这个,看看它是否与你得到的结果相符。@mucaho,在做了更多的研究后,我认为是这个。谢谢你的链接。很高兴能证实我的怀疑。如果你把你的评论作为回答,我会接受的。