在游戏循环中处理键盘交互 - javascript

Handling keyboard interaction in a game loop - javascript

我正在玩 javascript 并编写一个简单的游戏。我设置了一个游戏循环,想使用箭头键与游戏进行交互。我已经定义了一个事件处理程序来处理键盘交互并将其放置在主游戏循环之前和之外,以及游戏间隔(滴答)计时器的定义:

document.addEventListener("keydown", function(event) {
    var_to_modify = processKeys(event);
});

let gameTimer = window.setInterval(function() {
    gameLoop();
}, gameSpeed);

function gameLoop() {
    ...
}

游戏循环顺利结束,但问题是:我如何获取 processKeys() 函数的结果并使用它来修改在 gameLoop() 函数中使用的变量? 我知道这可以通过使用全局来实现,例如一个游戏状态变量,但是有没有不使用全局变量的更优雅的解决方案? 塔!

关闭游戏循环:

function generateGameLoop() {
let param = 0; //or any default value
let setParam = function (newParam) { 
param = newParam;
//here add any logic to respond to event
};
let gameLoop = function() {
    ...
}
return {setParam, gameLoop};
}

let setParam, gameLoop = generateGameLoop();

document.addEventListener("keydown", function(event) {
    setParam(processKeys(event));
});

let gameTimer = window.setInterval(function() {
    gameLoop();
}, gameSpeed);

我还会将 gameLoop 重命名为 gameStep 或 gameIncrement 或其他名称。

(代码可能有误,但目的是给你一个思路)