用数组理解关键代码
Understanding key codes with arrays
所以我在网上找到了这段代码,它可以帮助我用按键控制精灵,但我不太确定它是如何工作的。有人可以详细地向我描述数组如何在关键代码中工作吗?
它基本上让左右键和 space 条键起作用。
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);
}
浏览器无法告诉您某个键是否被按下。它只知道何时按下或按下某个键 。所以你必须自己跟踪密钥的状态。当一个键被按下时 (keyDownHandler
),你会记得它被按下了。当按下某个键 (keyUpHandler
) 时,您会记得它不是。这允许您的游戏循环对连续的按钮组合做出反应,而不是仅在按下时反应一次,或依赖自动重复触发。
所以我在网上找到了这段代码,它可以帮助我用按键控制精灵,但我不太确定它是如何工作的。有人可以详细地向我描述数组如何在关键代码中工作吗?
它基本上让左右键和 space 条键起作用。
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);
}
浏览器无法告诉您某个键是否被按下。它只知道何时按下或按下某个键 。所以你必须自己跟踪密钥的状态。当一个键被按下时 (keyDownHandler
),你会记得它被按下了。当按下某个键 (keyUpHandler
) 时,您会记得它不是。这允许您的游戏循环对连续的按钮组合做出反应,而不是仅在按下时反应一次,或依赖自动重复触发。