JavaScript游戏开发:如何用变量实现多值判断条件?
如何用变量存储多个按键码实现判断?
完全可行,你之前的写法无效是因为逻辑运算符||和&&的作用不是存储多个值:
var left = 68 || 39会返回第一个“真值”68,本质是逻辑判断而非存值var left = 68 && 39会返回最后一个“真值”39,同样达不到存储多个按键码的目的
下面是几种实用的实现方式:
方法1:用数组存储 + includes判断
这是最直观的写法,把需要判断的按键码放进数组,用includes()方法校验:
// 存储代表“左移”的按键码(D键和右键) const leftKeys = [68, 39]; // 事件监听中判断 document.addEventListener('keydown', function(event) { if (leftKeys.includes(event.keyCode)) { // 这里写左移的游戏逻辑 console.log('触发左移'); } });
方法2:用对象分组管理多组按键
如果游戏里有多个方向或功能按键,用对象分组会更清晰:
const actionKeys = { left: [68, 39], right: [65, 37], jump: [32, 87] // 空格和W键 }; document.addEventListener('keydown', function(event) { const keyCode = event.keyCode; if (actionKeys.left.includes(keyCode)) { console.log('左移'); } else if (actionKeys.right.includes(keyCode)) { console.log('右移'); } else if (actionKeys.jump.includes(keyCode)) { console.log('跳跃'); } });
方法3:兼容旧环境的indexOf写法
如果需要兼容不支持includes()的老浏览器,可以用indexOf()替代:
const leftKeys = [68, 39]; if (leftKeys.indexOf(event.keyCode) !== -1) { // 执行左移逻辑 }
额外建议:优先使用event.key替代keyCode
keyCode已经被标准废弃,现在更推荐用event.key直接判断按键字符,可读性更强:
const leftKeys = ['d', 'ArrowRight']; document.addEventListener('keydown', function(event) { // 转小写实现不区分大小写判断 if (leftKeys.includes(event.key.toLowerCase())) { console.log('触发左移'); } });
内容的提问来源于stack exchange,提问作者Arcadesmasher
相关产品推荐
相关产品推荐

