JS30 Day 12 - Key Sequence Detection学习笔记

今天要来做的功能是,按下指定键盘按键,就会输出彩蛋。
而我们设置的彩蛋按钮是,上上下下左右左右BABA。

成果如下图:
http://img2.58codes.com/2024/20126182wD91u4p4fK.png

首先,我们先创建彩蛋的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);

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章