检测到两个键盘按键同时按下
Detecting two keyboard keys being down at the same time
我尝试使用此代码来检测同时按下的两个键盘箭头:
document.addEventListener('keydown', event => {
if (event.keyCode === 38) {
console.log('up Arrow')
}
if (event.keyCode === 39) {
console.log('right Arrow')
}
})
但不管用多少,我都试图同时按下它们。
如何彻底解决此问题并检测两个键何时按下?
每个活动只有一个 keyCode
。您必须跟踪向下和向上的键:
// if you keep both up and down keys down, you'll get a message
let downKeys = {}; // the set of keys currently down
document.addEventListener('keydown', event => {
downKeys[event.keyCode] = true;
if (downKeys[38] && downKeys[40]) {
console.log("both down!");
}
});
document.addEventListener('keyup', event => {
downKeys[event.keyCode] = false;
});
(您必须打开整页才能测试此代码段)
这里我用了2个标志来检查你是否持有钥匙。
如果两个标志都为真,则表示您同时持有两个密钥。因此,您可以在条件内执行任何操作。
let holdKeyUp = false;
let holdKeyRight = false;
document.addEventListener('keydown', event => {
if (event.keyCode === 38) {
holdKeyUp = true;
}
if (event.keyCode === 39) {
holdKeyRight = true;
}
if (holdKeyUp && holdKeyRight) {
console.log("Both keys are pressed.");
}
})
document.addEventListener('keyup', event => {
if (event.keyCode === 38) {
holdKeyUp = false;
}
if (event.keyCode === 39) {
holdKeyRight = false;
}
})
我尝试使用此代码来检测同时按下的两个键盘箭头:
document.addEventListener('keydown', event => {
if (event.keyCode === 38) {
console.log('up Arrow')
}
if (event.keyCode === 39) {
console.log('right Arrow')
}
})
但不管用多少,我都试图同时按下它们。
如何彻底解决此问题并检测两个键何时按下?
每个活动只有一个 keyCode
。您必须跟踪向下和向上的键:
// if you keep both up and down keys down, you'll get a message
let downKeys = {}; // the set of keys currently down
document.addEventListener('keydown', event => {
downKeys[event.keyCode] = true;
if (downKeys[38] && downKeys[40]) {
console.log("both down!");
}
});
document.addEventListener('keyup', event => {
downKeys[event.keyCode] = false;
});
(您必须打开整页才能测试此代码段)
这里我用了2个标志来检查你是否持有钥匙。
如果两个标志都为真,则表示您同时持有两个密钥。因此,您可以在条件内执行任何操作。
let holdKeyUp = false;
let holdKeyRight = false;
document.addEventListener('keydown', event => {
if (event.keyCode === 38) {
holdKeyUp = true;
}
if (event.keyCode === 39) {
holdKeyRight = true;
}
if (holdKeyUp && holdKeyRight) {
console.log("Both keys are pressed.");
}
})
document.addEventListener('keyup', event => {
if (event.keyCode === 38) {
holdKeyUp = false;
}
if (event.keyCode === 39) {
holdKeyRight = false;
}
})