2016-11-07 54 views
0

我正在製作一款平臺遊戲,當玩家收集所有硬幣時,他們會進入下一關,如何在屏幕上添加一個計時器,當計時器達到0時,重新開始關卡?這是我現在的代碼中的一部分,如果玩家觸摸熔岩時會重新啓動關卡。如何爲我的遊戲添加計時器?

Level.prototype.playerTouched = function(type, actor) { 
    if (type == "lava" && this.status == null) { 
    this.status = "lost"; 
    this.finishDelay = 1; 
    } else if (type == "coin") { 
    this.actors = this.actors.filter(function(other) { 
     return other != actor; 
    }); 
    if (!this.actors.some(function(actor) { 
      return actor.type == "coin"; 
     })) { 
     this.status = "won"; 
     this.finishDelay = 1; 
    } 
    } 
}; 

function runGame(plans, Display) { 
    function startLevel(n) { 
    runLevel(new Level(plans[n]), Display, function(status) { 
     if (status == "lost") 
     startLevel(n); 
     else if (n < plans.length - 1) 
     startLevel(n + 1); 
     else 
     console.log("You win!"); 
    }); 
    } 
    startLevel(0); 
} 
+1

退房的文檔['setTimeout'(https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout)。您可能想在'startLevel()'中提前調用它。當你完成時不要忘記'clearTimeout()'。 – rphv

回答

0

一個選項是使用setInterval

下面是http://www.w3schools.com/js/js_timing.asp

<!DOCTYPE html> 
<html> 
<body> 

<p>A script on this page starts this clock:</p> 

<p id="demo"></p> 

<script> 
var myVar = setInterval(myTimer, 1000); 

function myTimer() { 
    var d = new Date(); 
    document.getElementById("demo").innerHTML = d.toLocaleTimeString(); 
} 
</script> 

</body> 
</html> 

的示例代碼以此爲樣本,你可以創建自己的時間留下了一個變量,降低定時器的每一個電話。

事情是這樣的:

var myVar = setInterval(myTimer, 1000); 

var timeLeft = 10; 

function myTimer() { 

    if (timeLeft > 0){ 
     timeLeft = timeLeft - 1; 
     document.getElementById("demo").innerHTML = timeLeft;  
    }else{ 
     document.getElementById("demo").innerHTML = "Game over";  
    } 

} 
+0

我試圖實現這一點,但不能得到它的工作,當我做的定時器高於遊戲,並顯示倒計時之前的第二秒的實際時間,也我不知道如何使其重置當它達到0時的水平。 – Lopez78