2014-11-04 55 views
0

编辑:添加时间为JavaScript游戏定时器如果条件已满足

我想我会尝试,并添加一些清晰度。基本上我想要的是类似于杆位:越过终点线并获得更多时间。除了在这种情况下,你匹配两个数字。


我想要在JavaScript和jQuery中变得更好,所以我认为创建游戏将是一个很好的方法。

游戏的要点是,您将得到一个数字,我们的目标是相符的编号。我有一切工作,包括当目标匹配时,它增加了分数。我现在想要的是,还要增加30秒回到匹配目标的时间。

我知道它为innerHTML增加了30秒,但不是倒计时。所以,如果你在15,将闪烁45然后再回到14

我找到了答案here,认为我可以改变

if (seconds == 0) { 
     isRunning = true; 
     seconds += 2; 

我的条件,将其更改为秒+ = 30 ;然而没有发生。

这是我的代码。如果你愿意分享,我也会接受Jquery解决方案。

var isWaiting = false; 
var isRunning = false; 
var seconds = 120; 
var countdownTimer; 
var finalCountdown = false; 
var goalDiv = document.getElementById("goal").innerHTML; 
var totalDiv = document.getElementById("total").innerHTML; 

function GameTimer() { 
    var minutes = Math.round((seconds - 30)/60); 
    var remainingSeconds = seconds % 120; 

    document.getElementById('timerID').innerHTML = remainingSeconds; 
    if (goalDiv == totalDiv) { 
     isRunning = true; 
     seconds += 30; 

     if (seconds == 0) { 
     $.mobile.changePage("index.html#youlost",{transition: "slideup"}); 
      clearInterval(countdownTimer); 
     } else { 
      finalCountdown = true; 
     } 

    } else { 
     isWaiting = true; 
     seconds--; 
    } 
} 
countdownTimer = setInterval(GameTimer, 1000); 
+0

也许你应该尝试parseInt()? – 2014-11-04 18:28:42

+0

你可以发布http://jsfiddle.net? – loveNoHate 2014-11-04 18:41:06

回答

0

看起来您在初始设置后从不更新totalDiv的值。

var goalDiv = document.getElementById("goal").innerHTML; 
var totalDiv = document.getElementById("total").innerHTML; 

然后,你GameTimer()功能只是不断一遍又一遍检查totalDiv的旧值。所以它永远不会增加秒计数器。

你可能想改变你的代码重新检查计时器的每一跳的totalDiv值:

function GameTimer() { 
    var minutes = Math.round((seconds - 30)/60); // also this does not make 
    var remainingSeconds = seconds % 120;   // much sense.. 

    var totalDiv = document.getElementById("total").innerHTML; 

    document.getElementById('timerID').innerHTML = remainingSeconds; 
    var totalDiv = document.getElementById("total").innerHTML; 

    //... 

这里的a JSFiddle,显示一个工作版本(基于您的示例代码,一个修改,基于关于我对你要做什么的理解)

而另一件事。这也不对..

seconds += 30; 
if (seconds == 0) {   // this won't be 0 unless seconds was -30 before.. 
    $.mobile.changePage("index.html#youlost",{transition: "slideup"}); 
     clearInterval(countdownTimer); 
} 
+0

这固定了我没有意识到我创建的零问题。谢谢。尽管如此,我仍然有问题。你肯定会让我走向正确的方向,让我思考更多。我注意到你的小提琴有我早些时候遇到的问题。它会添加30,然后继续添加。我希望它增加30,然后再次倒数。所以60变成90然后89,88,87 ... – user2936528 2014-11-04 20:27:02

0

我想通了。
首先我写了自己的时间。

var count = 120; 
    function timer() { 
      count--; 
    $("#timerID").html(+count); 
    } 

然后.... 1.我裹在$(document).ready函数的一切。

  1. 我把我的setInterval放在一个全局变量中。

  2. 我clearInterval拉变量,是我的函数内部和检查我的病情得分。

  3. 然后我添加30秒钟并调用计时器。

也许不是最好的策略,但它的工作原理。