我用EaselJS开发TD游戏,遇到一个问题。当敌人来到城堡时,他应该以统一的延迟开始攻击它。(例如:巫师: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);
}
发布于 2014-11-28 07:22:09
由于您知道在执行操作之前需要等待多少秒,也知道程序将以每秒多少帧的速度运行,因此您可以在执行操作之前对帧进行计数。
对帧进行计数的一种好方法是维护一个节拍计数器,并在计数器为正数的任何时候递减计数器,然后在计数器达到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);
}
https://stackoverflow.com/questions/27067998
复制相似问题