Javascript 在倒计时运行时生成敌人
我目前正在尝试使用HTML CSS Javascript和jQuery在gamejam期间创建一个游戏 我有一个倒计时,向玩家显示他还剩多少时间,当主角被敌人击中时会损失2秒 我想做的是找到一种方法,只要计时器没有达到30秒(他赢的地方)或0秒(他输的地方),每x秒生成一个敌人 到目前为止,我使用了两个库,用于physic的QuintusJS和jchavannes的倒计时,试图让它们一起工作。 到目前为止,一切都很好,但我无法创建如下所示的jQuery循环Javascript 在倒计时运行时生成敌人,javascript,jquery,Javascript,Jquery,我目前正在尝试使用HTML CSS Javascript和jQuery在gamejam期间创建一个游戏 我有一个倒计时,向玩家显示他还剩多少时间,当主角被敌人击中时会损失2秒 我想做的是找到一种方法,只要计时器没有达到30秒(他赢的地方)或0秒(他输的地方),每x秒生成一个敌人 到目前为止,我使用了两个库,用于physic的QuintusJS和jchavannes的倒计时,试图让它们一起工作。 到目前为止,一切都很好,但我无法创建如下所示的jQuery循环 while(currentTime &
while(currentTime < 30000){ //30s in milliseconds
stage.insert(new Q.Enemy({ x: 700, y: 0 })); //Allows ennemies to be generated by QuintusJS
//TODO : adding a delay between enemies generation
}
while(currentTime<30000){//30s(毫秒)
stage.insert(新的Q.defect({x:700,y:0}));//允许QuintusJS生成ennemies
//待办事项:增加两代之间的延迟
}
因为昆图斯创造的画布变成了一片空白。我还尝试创建一个函数,将checkCurrentTime
设置为true
,而currentTime
不等于0
,但在这种情况下将其更改为false
,但仍然不起作用
我做错了吗?如果是这样的话,我怎样才能创建一个能够正确生成敌人的循环呢?您可以创建一个每N毫秒执行一次操作的循环器。例如:
var looper = function (delay, callImmediately, callback) {
var self = this;
var deferred = $.Deferred();
if (callImmediately) {
callback.call(self);
}
var iv = setInterval(function () {
if (deferred.state() === "resolved" || deferred.state() === "rejected") {
clearInterval(iv);
} else {
callback.call(self);
}
}, delay);
return deferred;
};
然后,您可以随时启动和停止它:
// Every second add a new enemy
var loop = looper(1000, false, function () {
console.log("Adding an enemy");
//stage.insert(new Q.Enemy({ x: 700, y: 0 }));
});
// Handle done and fail
loop.done(function () { console.log("All enemies were added!"); });
loop.fail(function () { console.log("The loop was stopped before all enemies were added!"); });
// Resolve the looper after 30 seconds (calls .done())
setTimeout(loop.resolve, 30000);
// Or if something went wrong you can also reject it (calls .fail())...
setTimeout(loop.reject, 5000);
下面是一个小例子:
var player = {
health: 100,
};
// Damage the player every second
var iv = setInterval(function () {
player.health -= Math.floor(Math.random() * 10);
if (player.health <= 0) {
clearInterval(iv);
}
}, 1000);
// Every second add a new enemy
var loop = looper(1000, false, function () {
if (player.health <= 0) {
loop.reject("The player is dead. Stopping.");
} else {
//stage.insert(new Q.Enemy({ x: 700, y: 0 }));
console.log("Inserting an enemy; health is", player.health);
}
});
loop.done(function () { console.log("All enemies were added, and player is still alive!"); });
loop.fail(function (message) { console.log(message) });
// Stop the looper after 30 seconds
setTimeout(loop.resolve, 30000);
var播放器={
健康:100,
};
//每秒对玩家造成伤害
var iv=设置间隔(函数(){
player.health-=Math.floor(Math.random()*10);
如果(player.health30000s
是一个无效值。我不知道您是否拼写错误,但以防万一,我必须指出您在毫秒旁边有一个“s”,您不应该有。控制台上有任何错误吗?抱歉,我手工重写了我尝试过的代码,该值没有“s”(我将编辑我的问题)