所以,我正在编写一个使用键盘输入的游戏。我跟踪类似于此处的KeyDown和KeyUp事件:
http://nokarma.org/2011/02/27/javascript-game-development-keyboard-input/index.html
但是,有些用例可能会错过Keyup / Keydown事件。我尝试在我的body元素中添加一个模糊,但是有一些用例并没有模糊。我可以给出的最简单的例子是,如果用户右键单击文档外的区域,比如书签,则浏览器不会向DOM提供任何事件,并且上下文菜单开始获取键盘输入。因此,如果用户持有向上箭头并且仍然按住向上箭头,右键单击书签,然后释放箭头键,则相应的KeyUp事件将永远不会被提供给浏览器。如果用户再次按下该键,则该键将重置',但这仍然是一个错误。
对于Chrome和Firefox,我可以使用PointerLock API,但我想知道我还能做些什么。我想如果鼠标离开客户区会自动模糊,但是当我玩游戏时,我通常会将鼠标移动到底角。 AFAIK无法手动轮询键盘。有没有我错过的工作?
答案 0 :(得分:0)
我不确定它是否会有所帮助,但在你的实现中,在keydown方法上更改一个变量以表明它已被按下。
还运行一个计时器,每隔x ms将值重置为未按下(如果仍然按下,则keydown方法应在同一更新中触发)
然后在keyup方法上将变量更改为未压缩。
如果按下按钮,这应该给出一个更可靠的指示,我以前在一个效果很好的java游戏中使用了一个类似的方法!