我正在尝试构建一个单词克隆,但在尝试仅过滤出字母表作为游戏的键盘输入时遇到了问题。
目前我有一个键盘容器,其中包含每行(“行”类)键(“键”类)和一个 JS 文件的开头,我似乎无法在其中向前移动:
// Keyboard
// Listen for key being released
let key_codes = [81,87,69,82,84,89,85,73,79,80,
65,83,68,70,71,72,74,75,76,
13,90,88,67,86,66,78,77,8];
document.addEventListener('keyup', (e) => {
if (e.keyCode in key_codes) {
console.log(e.keyCode);
}
});
我已经列出了游戏所有可接受的键码,并尝试添加一个事件侦听器来监视释放的键,但是当我检查“if (e.keyCode in key_codes)”时,我没有得到输出当我应该的时候。
我已经检查了列表元素和 keyCodes 的类型(它们匹配),并尝试在 if 语句之前打印“e.keyCode”,并且它会正确打印我按下的任何键。
我可能在这里遗漏了一些明显的东西,但不知怎的,我无法自己弄清楚这一点。
这不是在 javascript 中使用
in
关键字的方式,in
用于检查对象中是否具有特定属性 在关键字中了解更多信息
如何实现这一点是通过使用
Array.prototype.includes
函数
let key_codes = [81,87,69,82,84,89,85,73,79,80,
65,83,68,70,71,72,74,75,76,
13,90,88,67,86,66,78,77,8];
document.addEventListener('keyup', (e) => {
if (key_codes.includes(e.keyCode)) {
console.log(e.keyCode);
} else console.log(`${e.keyCode} not in array`);
});
运行上面的代码并自行测试一下