【发布时间】:2016-09-02 15:01:50
【问题描述】:
我正在用 JavaScript 编写一个简单的游戏,它已经像这样处理基本的键盘输入:
var input = {};
document.onkeydown = function(e) {
input[e.keyCode] = true;
}
document.onkeyup = function(e) {
input[e.keyCode] = false;
}
while (!done) {
handleInput(input);
update();
render();
}
现在我需要游戏来处理组合键(例如 CTRL+X)。我希望它仅在keyup 上接受此类组合。
编辑:修饰键不需要与“主”键同时全部向上。 /编辑
我想到的两种可能的解决方案是:
- 公开包含
keyup事件列表的数组(带有“主”键和修饰符的对象)。handleInput函数将负责在每次轮询队列时清空队列 - 跟踪
handleInput中可能的组合键(注意按住的修饰键)并在“主”键上升时触发组合行为(我实际上不太喜欢这样)
您能建议我用一种优雅的方式来扩展当前功能吗?
【问题讨论】:
-
无论如何,好问题!
标签: javascript keyboard-shortcuts keyboard-events game-loop