我正在用簡單的代碼構建遊戲,但很有用,而且我遇到了問題。範圍問題與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