我用EaselJS开发TD游戏并面临一个问题。 当敌人来到城堡时,他应该开始用uniq延迟攻击它。(例如女巫:3秒,元素:2秒e.t.c.) 如何使用启用的自动收报机设置此延迟?
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)
由于您知道在执行操作之前需要等待多少秒,并且您知道程序将在每秒运行多少帧,您可以做的是在执行操作之前计算帧数。
计算帧数的一个好方法是维持一个滴答计数器,并在计数器为正数时递减计数器,然后在计数器达到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);
}