我得到了这个用 html/css/javascript 编写的扫雷游戏,它通常运行得很好,我在里面放了一个计时器,计时器总是运行平稳。
但是,当我玩游戏时,它开始随机增加 2(这意味着计时器以某种方式被触发了两次而没有超时工作)。据我所知,它从未发生过,我尝试过但无法再次发生,这是一个链接,相关代码如下:
function timer() {
if ( gameOn ) {
timePast++;
document.getElementById("timer").innerHTML = timePast;
timeoutID = window.setTimeout(timer, 1000);
}
}
计时器在我的start()
函数中设置:
timePast = 0;
//start the timer if it was stopped
if ( !gameOn )
timeoutID = window.setTimeout(timer, 1000);
这是我的gameOn
变量的所有实例(除了上面的两个和 if 语句):
var gameOn = false; //(line 6) initialization
gameOn = true; //(line 85) in start() - after the above code
gameOn = false;//(line 154) in checkWin() function
gameOn = false;//(line 239) in gameOver() function (triggers when game is lost)
以下是上述功能的部分(可能相关的部分):
function bombCheck(event) {
var boxNum = parseInt(event.id);
if ( bomb.indexOf(boxNum) >= 0 ) {
gameOver(); }}
gameOver(){gameOn = false;}
现在checkWin:
function checkWin() {
if ( flippedCount === ( cellAmount - bombAmount ) ) { gameOn = false; }}
开始触发:
<input type="button" class="MtopSmall" value="start!" name = "startButton" onclick = "start();" >
start(){gameOn = true;}
我知道我应该改变setTimeout
并且setInterval
我会(有一天),但我想了解这里有什么问题。
我对javascript有相当不错的理解,我完全被难住了,如果有人能告诉我为什么会发生这种情况和/或如何解决它,那会很酷。