cocos2d-js 定时器

1.scheduleUpdate

节点中有scheduleUpdate接口,通过这个接口,可以让游戏在每帧执行都执行update方法

varScheduleUpdateLayer = cc.Layer.extend({ball:null,ctor:function(){this._super();this.scheduleUpdate();// 开启定时器varwinSize = cc.director.getWinSize();varball =newcc.Sprite("res/item_2.png");        ball.x = winSize.width/2;        ball.y = winSize.height/2;this.addChild(ball);this.ball = ball;        cc.eventManager.addListener({// 监听鼠标事件event:cc.EventListener.MOUSE,onMouseDown:function(event){varaction = cc.moveTo(1,event.getLocation().x,event.getLocation().y);                ball.runAction(action);            }        },this)    },update:function(){// 重写update方法console.log(this.ball.x+"---"+this.ball.y);    }})

2. scheduleOnce

scheduleOnce和setTimeout类似,接受两个参数,第一个参数是回调函数,第二个参数是事件,scheduleOnce接受的时间以秒为单位。

节点都有scheduleOnce接口。

varScheduleLayer = cc.Layer.extend({ctor:function(){this._super();this.scheduleOnce(function(){// 2秒后打印日志console.log("scheduleOnce");        },2);    }})

3. schedule

schedule和setInterval类似,实现固定时间间隔不断触发某个函数的功能。

node.schedul(callback, interval, repeat, delay)

interval触发间隔,以秒为单位

repeat重复次数,会执行repeat+1次

delay是第一次出发前的延迟时间,以秒为单位

如果希望schedule无限循环,可以省略后两个参数,也可以设置repeat为常量cc.REPEATE_FOREVER

this.schedule(function(){console.log("schedule");        },2,cc.REPEAT_FOREVER,2);

schedule基于帧数控制,当帧频降低时,schedule会积累大量的误差

一个平衡的定时器

schedule2:function(callback,interval){varthen =Date.now();        interval = interval*1000;this.schedule(function(){varnow =Date.now();vardelta = now-then;if(delta > interval){                then = now - (delta % interval);//如果本次触发延迟了,就让下次触发早一点来抵消误差callback.call(this);            }        }.bind(this),0);// 0表示每帧触发}

4. 取消定时器

取消scheduleUpdate ,使用 node.unscheduleUpdate()

取消scheduleOnce和schedule,使用node.unschedule()

varScheduleLayer = cc.Layer.extend({ctor:function(){this._super();this.schedule(this.tick,1,cc.REPEAT_FOREVER,1);this.tickCount =0;    },tick:function(){console.log("tick");this.tickCount++;if(this.tickCount ==5){this.unschedule(this.tick);        }    }})

5.暂停/恢复定时器

node.pause();//暂停node.resume();//恢复

链接:https://www.jianshu.com/p/df26c8ef1671

你可能感兴趣的:(cocos2d-js 定时器)