3

我并不完全是专业的,但只是出于好奇,因为直到最近。因此我只有最基本的OF基础知识。

我目前的实验是这样的;您可以编写一系列按键,以执行特定功能,并且仅以正确的顺序执行吗?我说的就像一个游戏组合(即:著名的Konami Code彩蛋,由'↑'、'↑'、'↓'、'↓'、'←'、'→'、'←'、'→组成'、'B'、'A' 和 '开始')

例如,如果我使用“onkeydown”来执行此操作,它只会注册那个键,而不考虑之前或之后按下的任何键(或者我相信)。如果没有,我将不得不以某种方式记录之前发生的事情,然后……离开我的小鱼联盟。

有没有办法做这样的事情,希望更简单,更容易?请不要指望我知道很多,请不要使用 JQuery 或其他这样的 js 库:D 用法。

您能否以 Konami 代码为例编写脚本?此模式的 js 字符代码为 38 38 40 40 37 39 37 39 66 65 13,将 Nintendo 的“开始”替换为“Enter”键。

4

2 回答 2

2

这是一个工作示例,如果你搞砸了,你可以简单地重新启动序列,它会原谅你。此外,如果您想要不同的组合,只需更改“键”即可。

<!DOCTYPE html>
<html>
<head>
<script>
var keys=[38,38,40,40,37,39,37,39,66,65];
var buff=[];
function collect(e){
  buff.push(e.keyCode);
  if(buff.length>keys.length){
    buff=buff.splice(1);
  }
  if(keys==buff.toString()){ 
    alert("Let's Play!");
  }
  e.preventDefault();
  e.stopPropagation();
}
</script>
</head>
<body>
<DIV contenteditable=true onkeydown="collect(event)">Click here to accept keystrokes</DIV>
</body>
</html>

我将密钥捕获放在 DIV 中,但您可以将其添加到 document.body 中,它会在页面上的任何地方进行监听。

于 2013-08-09T21:43:50.473 回答
1

只需听键并与某些东西进行比较:

var konami = [38,38,40,40,37,39,37,39,66,65],
    pushed = [];

document.onkeyup = function(e) {
    pushed.push(e.which);

    for (var i=0; i<pushed.length; i++) {
        if (pushed[i] != konami[i]) pushed = [];
    }

    if (pushed.length == konami.length) alert('konami code');
}

小提琴

于 2013-08-09T21:00:20.057 回答