我正在用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
(监视按下的修饰键)并在“主”键上升时触发组合行为(我实际上并不那么喜欢)您是否可以建议我以一种优雅的方式扩展当前功能?
您所要做的就是创建upInput
变量,将密钥存储在其中。然后,要检查是否按下了组合键,您必须检查CTRL + C
变量中是否只有(或17、67)个组合键,以及是否所有组合键true
。然后轻松打印您的消息并重置upInput
变量。
var input = upInput = {};
document.onkeydown = function(e) {
input[e.keyCode] = true;
if (JSON.stringify(Object.keys(upInput)) != '["17","67"]')
upInput = {};
}
document.onkeyup = function(e) {
var k = e.keyCode;
input[k] = false;
if ([17, 67].indexOf(k) > -1)
upInput[k] = true;
if (JSON.stringify(Object.keys(upInput)) == '["17","67"]'
&& upInput[17] && upInput[67]) // CTRL + C
alert('YES!'),
upInput = {};
}
希望对您有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句