我有3个全局声明的setInterval函数,其中2个正在工作,另外两个函数无论我做什么都不起作用。我正在使用一个单独的函数来清除间隔(函数ClearintervalTime()),它在stopGame()中调用
var clearIntervalvariable0, clearIntervalvariable1, clearGameInterval1=null;
function gameDuration() {
counter = 90;
clearGameInterval1 = setInterval(gameDurationCounter, 1000);
function gameDurationCounter() {
counter--;
document.getElementById('timer').innerText = 'Time remaining:' + counter;
speed();
if (counter == 0) {
stopGame();
// clearInterval(clearGameInterval1);
console.log('game was stopped');
};
};
};
function ClearintervalTime() {
clearInterval(clearGameInterval1);
clearInterval(clearIntervalvariable0);
clearInterval(clearIntervalvariable1);
};
function stopGame() {
bubbles.length = 0;
noLoop();
ClearintervalTime();
};
无论我做什么,这段代码都不起作用,唯一让它工作的是如果我在gameDuration()中本地声明clearGameInterval1然后用注释行在闭包函数gameDurationCounter()中关闭它。 我有一个停止游戏按钮,我想关闭间隔,不仅当计数器达到0但在按钮上也是如此。 如果我保留上面列出的代码,如果我注释掉clearInterval(clearGameInterval1),计数器甚至都不会启动;在ClearintervalTime()中,计数器将启动,但我无法停止/清除它......我想出来试图解决这个问题。没有其他变量或函数具有相同的名称,并且我试图将gameDurationCounter()置于外部(不在闭包中)相同的效果。有人可以告诉我发生了什么,出了什么问题吗?
答案 0 :(得分:1)
在这个问题上花了超过2天后,我终于找到了错误..这就是我:(。我正在开始游戏,游戏计数器 startGame();中的gameDuration();
function startGame(bubbleSpawnInterval) {
if (!bubbleSpawnInterval) {
alert('Please select a difficulty!');
} else {
initializingVariavles();
loop();
gameDuration();
randomTimers(bubbleSpawnInterval);
difficultyLevel(bubbleSpawnInterval);
};
}; 在difficultyLevel(bubbleSpawnInterval)中,我正在清除所有3个间隔,但我在同一个函数中设置了另外2个(工作正常),而计数器间隔仍然被清除...我只需要放置gameDuration()函数使用的extendLevel(bubbleSpawnInterval)。
function startGame(bubbleSpawnInterval) {
if (!bubbleSpawnInterval) {
alert('Please select a difficulty!');
} else {
initializingVariavles();
loop();
randomTimers(bubbleSpawnInterval);
difficultyLevel(bubbleSpawnInterval);
gameDuration();
};
};