我正在用简单的代码构建游戏,但很有用,而且我遇到了问题。范围问题与setInterval游戏循环
我的游戏循环如下所示:
function loop() {
updateGame(game1, canvas1, onInit);
displayGame(game1, canvas2, onInit);
monitorPreformance(game1, canvas3, onInit);
onInit = false;
}
setInterval(loop, 20);
而且,例如,我有内部updateGame:
function updateGame(arg1, arg2, arg3) {
var a, b, c;
function doThis {
//
}
function doThat {
//
}
function draw(){
doThis();
doThat();
}
draw();
}
的问题是,我的变量a,b和c,得到重新初始化每个我打电话给setInterval。游戏创建时,我在每个updateGame,drawGame和monitorPreformance中调用了三次setInterval。现在我希望能够做到像暂停游戏这样的事情,所以我想按照上述方式进行设置,但这会导致这些范围问题。
有没有简单的解决方法?我是否必须初始化全局对象以包含每个函数的a,b,c?请注意,大约有50个这样的变量,这需要对代码进行半主要的重写。请注意,一些变量需要在三个游戏之间传递,game1的参数也是如此。然而,其他变量只需要在每个函数的循环调用之间进行。
如果没有简单的解决方法,那么正确的方法是什么?要实现这一目标
也许你应该将它作为参数传递,也许它们应该是'game1'属性,也许它们应该是全局变量。不知道你的情况的细节很难知道。 – pomber
你可以使这个变量全局。 'var window.a;'等 –
忽略全局变量建议 – naomik