我遇到了一個簡單而令人困惑的問題: 如何停止執行一段JavaScript代碼?如何防止JavaScript代碼執行?
在我的遊戲中,我有一個函數(帶有延遲,因爲該函數執行死亡序列)。 由於延遲,該函數需要5秒才能完成執行。
我希望此函數在繼續執行剩餘的代碼之前完全執行完成。但是剩下的代碼(抹去畫布)在函數仍在執行時被執行。
我該如何解決這個問題?
我遇到了一個簡單而令人困惑的問題: 如何停止執行一段JavaScript代碼?如何防止JavaScript代碼執行?
在我的遊戲中,我有一個函數(帶有延遲,因爲該函數執行死亡序列)。 由於延遲,該函數需要5秒才能完成執行。
我希望此函數在繼續執行剩餘的代碼之前完全執行完成。但是剩下的代碼(抹去畫布)在函數仍在執行時被執行。
我該如何解決這個問題?
hackish的解決方案:
有死亡順序設置一個全局變量來true
啓動時和false
,當它完成。在渲染循環函數的開始部分,您檢查全局變量,並在它爲真時檢查該變量。
更清潔的解決方案是在邏輯循環和渲染循環中都有適當的狀態處理。
我還沒有看到你的代碼,但它聽起來像你可能想要使用回調。
function deathSequence(callback) {
...
function step() {
lots_of_stuff;
...
if(sequence_done) {
callback();
} else {
setTimeout(step, 100);
}
}
step();
...
}
function game() {
...
if(dead) {
deathSequence(function() {
// Canvas won't get wiped until death
// sequence is over
wipe canvas;
})
}
...
}
考慮使用一個回調 – PseudoNinja
是否有一個原因的最後一條語句在你的死亡序列不能調用該清除畫布功能? – War10ck