2014-01-09 50 views
0

我想使用HTML5(Javascript)做一個簡單的遊戲。我想把時間限制在事件上。例如,當一個玩家進入一個屋頂關閉的房間時,我想給他們幾秒鐘的時間做出決定,然後自動發生其他事件。但是,如果他們做出決定,我不想讓定時功能開火。JavaScript/jQuery /等方法來衡量時間過去/觸發事件後的時間

我該如何做到這樣?

+1

查看'setTimeout'和'clearTimeout'作爲起點。 :-) –

+0

您需要'setTimeout()' – 2014-01-09 22:26:15

+0

您可能正在使用requestAnimationFrame,因此請使用充當Timer的類。 –

回答

1

對於這一點,我喜歡用一個自定義的Timer類

  var Timer = function(callback, delay, autoRun){ 

       this.running = (autoRun == undefined)?true:autoRun; 
       this.completed = false; 
       this.delay = delay; 
       this.callback = callback; 
      }; 

      Timer.prototype.pause = function() { 
       this.running = false; 
       return this; 
      }; 

      Timer.prototype.resume = function() { 
       this.running = true; 
       return this; 
      }; 

      Timer.prototype.finish = function(){ 
         this.running = false; 
         this.completed = true; 
         this.callback(); 
         return this; 
      }; 

您只需創建一個新的計時器,它添加到得到一個固定的量與正選賽循環(20ms的更新定時器列表很好)。因此,如果您的遊戲滯後,用戶不會受到懲罰;)

例如: var listOfTimers = [];

function draw(){ 
    //Called every frame 
    for(var i = 0; i<listOfTimers.length; i++){ 
     if(listOfTimers[i].running){ 
      listOfTimers[i].delay -= 20; 

      if(listOfTimers[i].delay <= 0){ 
       listOfTimers[i].finish(); 
     } 
    } 

    //The rest of your draw logic... 
} 
相關問題