Javascript游戏输入失去焦点

Javascript游戏输入失去焦点,javascript,html,javascript-events,Javascript,Html,Javascript Events,所以,我正在编写一个使用键盘输入的游戏。我跟踪KeyDown和keydup事件,如下所示: 然而,在某些用例中,Keyup/Keydown事件可能会被忽略。我试着给我的身体元素添加一个模糊,但在某些情况下它不会模糊。我能给出的最简单的例子是,如果用户右键单击文档之外的区域,比如说在图书标记上,浏览器不会向DOM提供任何事件,上下文菜单开始获取键盘输入。因此,如果用户在按住向上箭头的同时仍按住向上箭头,右键单击书签,然后释放箭头键,则相应的KeyUp事件将永远不会提供给浏览器。如果用户再次按下该

所以,我正在编写一个使用键盘输入的游戏。我跟踪KeyDown和keydup事件,如下所示:

然而,在某些用例中,Keyup/Keydown事件可能会被忽略。我试着给我的身体元素添加一个模糊,但在某些情况下它不会模糊。我能给出的最简单的例子是,如果用户右键单击文档之外的区域,比如说在图书标记上,浏览器不会向DOM提供任何事件,上下文菜单开始获取键盘输入。因此,如果用户在按住向上箭头的同时仍按住向上箭头,右键单击书签,然后释放箭头键,则相应的KeyUp事件将永远不会提供给浏览器。如果用户再次按下该键,则该键将“重置”,但这仍然是一个错误


对于Chrome和Firefox,我可以使用pointerlockapi,但我想知道是否还有其他我可以做的事情。我曾想过,如果鼠标离开客户端区域,会自动模糊,但当我玩游戏时,我通常会将鼠标移动到下角。恐怕无法手动轮询键盘。是否有我遗漏的解决方法?

我不确定这是否有帮助,但在您的实现中,在keydown方法的某个地方更改一个变量以指示它被按下

同时运行一个计时器,每x ms将该值重置为未按下(如果仍在按下,则按键方法应在同一次更新中触发)

然后在keyup方法上,将变量更改为unpressed


如果按下按钮,这将给出更可靠的指示,我以前在java游戏中使用了simular方法,效果非常好

按键之间的时间似乎变化很大,所以我会让它们在“安全”毫秒数后过期。每次按键事件都会重置计时器。不过,这正是我一直在寻找的工作。非常感谢。