检测是否按下了if语句的数字键

Detecting the pressing of a number key for an if statement

本文关键字:语句 数字 if 是否 检测      更新时间:2023-11-13

我正在尝试制作一个游戏,在这个游戏中,正确的数字组合会给玩家带来帮助他们通过关卡的效果。我的计划是使用if语句来测试被按下的键,并相应地更改变量。这应该很简单,但我的尝试失败得很惨,而我找不到任何页面来充分解释这一点。那么,有人知道我如何检测javascript中if语句的数字键按下吗?

如果您想要输入某个特定的数字序列,则需要使用缓存并检查每个击键。下面是一个例子。我已经表示,我想要1,然后是2,然后是3。做错了会重置顺序。在这种情况下,完成它也会重置。

试试看。运行它并按1,然后按2,然后按3。中断序列意味着您必须重新启动。

//press 1, then 2 then 3
var code = [49, 50, 51]
var cache = [];
function checkCode(eve) {
    var keycode = eve.keyCode || eve.which;
    if(keycode === cache.shift()){
      if(!cache.length){
        //resets if you did it. do not include if you want once.
        replenishCache();
        //do whatever you do here.
        doThing();
      }
    } else {
      replenishCache();
    }
}
function doThing(){
    alert('sequence entered');
}
function replenishCache(){
    cache = code.slice(0);
}
replenishCache();
window.addEventListener('keypress', checkCode, false);

我要补充的是,这段代码完全不在任何框架、模块或模式的上下文中。我只是在窗口上附加了一个事件来说明。你需要考虑如何将其迁移到你正在做的任何事情中。例如,在这种情况下,与其直接调用一个更全局的函数doThing,不如将其传递到某种插件或模块中。字符代码序列也是如此。