今天要来做的功能是,按下指定键盘按键,就会输出彩蛋。
而我们设置的彩蛋按钮是,上上下下左右左右BABA。
成果如下图:
首先,我们先创建彩蛋的code,也就是指定要按下按键,要得知按键的keyCode的话,我们必须先在window下新增一个keyup事件,这样就可获取对应按键的keyCode,并且设置一个空阵列来放置我们按下的按键。
// 设置一个彩蛋code const secretCode = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65]; // 空阵列 const input = [];
而我们利用push将按下的按键keyCode给push进去,然后再利用join去将阵列拼接成字串,再进行比对,如果input的keyCode = 彩蛋的keyCode,那就呼叫外部的Js产生独角兽。
// 给予视窗增添键盘事件 window.addEventListener('keyup', (e) => { console.log(e.keyCode); input.push(e.keyCode); if (input.join('') === secretCode.join('')) { console.log("Ding Ding"); cornify_add(); }
当我们成功进去一次,就无法再次成功了,因为阵列的资料会不断增加以致比对失败,所以我们要在每次超过长度后移除元素,来保持两个阵列的数量相同,此处利用shift
,当超过时,就移除第一个元素
,并且我们新添加的元素会在最后一位。
// if (input.length > secretCode.length) { // input.shift(); // console.log(input); // }
而原作者是利用splice去切掉多余的元素。splice(起始位置,数量) 而负的就视为0
,所以到input内的资料数量到10之前都不会有动作,直到超过10(11-10=1),而我们起始位置-11的部分,也能以0代替。
input.splice(-secretCode.length - 1, input.length - secretCode.length);