2014-11-21 47 views
1

問題我用EaselJS開發TD遊戲並面臨一個問題。 當敵人來到城堡時,他應該開始用uniq延遲進行攻擊(例如女巫:3秒,元素:2秒e.t.c) 如何使用啓用的ticker設置延遲?EaselJS

 createjs.Ticker.on("tick", moveTick); 
 
     createjs.Ticker.setFPS(20); 
 
     console.log(mobs); 
 

 
     function moveTick(event) { 
 
      for (var i = 0; i < mobs.length; i++) { 
 
       if (mobs[i].y > stage.canvas.height - castle.castleHeight - mobs[i].elemSize) { 
 
        setTimeout(console.log("attacking"), 600000); 
 
       } else { 
 
        mobs[i].y = mobs[i].y + mobs[i].movementSpeed; 
 
       } 
 
      } 
 
      field.update(event); 
 
     }

回答

0

既然你知道你要多少秒,執行行動之前,有一些等待,你知道每秒你的程序會在運行多少幀,你所能做的就是計數在執行操作之前的幀。

計算幀數的一個好方法是維護計時器,並在計數器是正數時遞減計數器,然後在計數器達到0時執行動作。下面是部分使用的代碼示例你如何代碼這可能工作:

 createjs.Ticker.on("tick", moveTick); 
 
     createjs.Ticker.setFPS(20); 
 
     console.log(mobs); 
 

 
     // note that enemy_ticker would probably be a property of your enemy object: 
 
     var enemy_ticker = -1; 
 

 
     function moveTick(event) { 
 
      if (event that causes enemy to attack soon) { 
 
       enemy_ticker = 60; // this gives us 3 seconds 
 
      } 
 

 
      if (enemy_ticker > 0) { 
 
       enemy_ticker--; 
 
      } else if (enemy_ticker = 0) { 
 
       enemy_ticker--; 
 
       // put your code to start your enemy's attack here 
 
      } 
 
      field.update(event); 
 
     }