【问题标题】:Detecting the pressing of a number key for an if statement检测 if 语句的数字键按下
【发布时间】:2016-04-03 01:26:15
【问题描述】:

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

【问题讨论】:

标签: javascript if-statement numbers key


【解决方案1】:

如果您要输入一些特定的数字序列,则需要使用缓存并检查每次击键。下面是一个例子。我已经表明我想要 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 - 您可能应该将其传递给某种插件或模块。字符代码序列也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2012-06-09
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多