2014-11-21 52 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); 
 
     }