Javascript/jQuery/etc中测量时间流逝/触发时间段后事件的方法

Javascript/jQuery/etc中测量时间流逝/触发时间段后事件的方法,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试使用HTML5(Javascript)制作一个简单的游戏。我想对事件设置时间限制。例如,当一个玩家进入一个房间,那里的屋顶正在向他们靠近,我想给他们几秒钟时间,让他们在自动发生其他事件之前做出决定。但是,如果他们做出决定,我根本不想启动定时函数 如何实现这样的功能?为此,我喜欢使用自定义计时器类 var Timer = function(callback, delay, autoRun){ this.running = (aut

我正在尝试使用HTML5(Javascript)制作一个简单的游戏。我想对事件设置时间限制。例如,当一个玩家进入一个房间,那里的屋顶正在向他们靠近,我想给他们几秒钟时间,让他们在自动发生其他事件之前做出决定。但是,如果他们做出决定,我根本不想启动定时函数


如何实现这样的功能?

为此,我喜欢使用自定义计时器类

            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,因此请使用一个充当计时器的类。