javascript - 理解数组的关键代码

标签 javascript arrays key

所以我在网上找到了这段代码,它可以帮助我用按键控制我的 Sprite ,但我不太确定它是如何工作的。有人可以在某种程度上详细地向我描述数组如何工作到关键代码等吗?

它基本上让左右键和空格键起作用。

    var keys = [];  

    //This is part of a class
    this.listenInput = function() {
            if (keys[37]) {
                this.x -= speed; 
            }
            if (keys[39]) {
                this.x += speed;
            }
        };


function setupKeys() {
    var listenedKeys = [32, 37, 38, 39, 40];

    function keyUpHandler(event) {
       var keyCode = event.keyCode;
       if (listenedKeys.indexOf(keyCode) === -1) return;
       keys[keyCode] = false;        
    }
       function keyDownHandler(event) {
            var keyCode = event.keyCode;
            if (listenedKeys.indexOf(keyCode) === -1) return;
            keys[keyCode] = true;        
            if (keyCode === 32) {
               spaceBarPressed = true;
            }
           event.preventDefault();
        }

        //Event listeners for keys
        window.addEventListener("keydown", keyDownHandler, false);
        window.addEventListener("keyup", keyUpHandler, false);
    }

最佳答案

浏览器无法告诉您是否按下了某个键。它只知道何时按下或压下某个键。因此,您必须自己跟踪 key 的状态。当按下某个键 (keyDownHandler) 时,您会记住它已被按下。当某个键被按下时 (keyUpHandler),您会记得它没有被按下。这允许您的游戏循环对连续的按钮组合使用react,而不是仅在按下时使用react,或依赖自动重复来触发。

关于javascript - 理解数组的关键代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27812352/

相关文章:

javascript - 加载 xml 对象时出现意外标记非法?

php - 按自定义顺序对数组的php数组进行排序

objective-c - 对象数 (0) 与键数 (1) 不同

spring - 在 Spring Boot 中的 Yaml 中转义 Map 键中的点

javascript - 将只有键的对象分配给 require 语句

javascript - CORS 与 pysimplesoap 服务器

javascript - React 冒泡的事件传播乱序

c - 排序工作在main()中,但不在单独的函数中

ios - 来自 NSArray (2dim) 的 NSMutableArray (1 dim)

java - 将字符串转换为键