Javascript/jQuery/etc中测量时间流逝/触发时间段后事件的方法
我正在尝试使用HTML5(Javascript)制作一个简单的游戏。我想对事件设置时间限制。例如,当一个玩家进入一个房间,那里的屋顶正在向他们靠近,我想给他们几秒钟时间,让他们在自动发生其他事件之前做出决定。但是,如果他们做出决定,我根本不想启动定时函数Javascript/jQuery/etc中测量时间流逝/触发时间段后事件的方法,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试使用HTML5(Javascript)制作一个简单的游戏。我想对事件设置时间限制。例如,当一个玩家进入一个房间,那里的屋顶正在向他们靠近,我想给他们几秒钟时间,让他们在自动发生其他事件之前做出决定。但是,如果他们做出决定,我根本不想启动定时函数 如何实现这样的功能?为此,我喜欢使用自定义计时器类 var Timer = function(callback, delay, autoRun){ this.running = (aut
如何实现这样的功能?为此,我喜欢使用自定义计时器类
var Timer = function(callback, delay, autoRun){
this.running = (autoRun == undefined)?true:autoRun;
this.completed = false;
this.delay = delay;
this.callback = callback;
};
Timer.prototype.pause = function() {
this.running = false;
return this;
};
Timer.prototype.resume = function() {
this.running = true;
return this;
};
Timer.prototype.finish = function(){
this.running = false;
this.completed = true;
this.callback();
return this;
};
您只需创建一个新的计时器,将其添加到计时器列表中,通过主绘制循环以固定数量进行更新(20毫秒为宜)。因此,如果您的游戏落后,用户不会受到处罚;)
例:
var-listOfTimers=[]
function draw(){
//Called every frame
for(var i = 0; i<listOfTimers.length; i++){
if(listOfTimers[i].running){
listOfTimers[i].delay -= 20;
if(listOfTimers[i].delay <= 0){
listOfTimers[i].finish();
}
}
//The rest of your draw logic...
}
函数绘图(){
//调用每帧
对于(var i=0;i以setTimeout
和clearTimeout
为起点::-)您需要setTimeout()
您可能正在使用requestAnimationFrame,因此请使用一个充当计时器的类。