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

问题描述 投票:0回答:1

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

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

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

function gameLoop() {
    ...
}

游戏循环很好地滴答答答,但问题是这样的:如何获取processKeys()函数的结果,并使用它来修改在gameLoop()函数中使用的变量?我知道这可以通过使用全局游戏状态变量,但是有没有使用全局变量的更优雅的解决方案?塔!

javascript addeventlistener keyboard-events
1个回答
0
投票

在游戏循环周围有一个关闭处:

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或其他。

((代码可能是错误的,但目的是给您一个想法)

© www.soinside.com 2019 - 2024. All rights reserved.