我用html / css / javascript编写的这款扫雷游戏,一般运行得相当不错,我在其中放了一个计时器,计时器总能顺利运行。
然而,当我正在播放它时,它开始递增2(这意味着计时器以某种方式被触发两次而没有超时工作)。从来没有发生过,据我所知,我试过但不能让它再次发生,here is a link,以及相关的代码:
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有一个相当不错的理解,我完全难过,如果有人能告诉我为什么会发生这种情况和/或如何解决它,那将会很酷。