1.scheduleUpdate

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

var ScheduleUpdateLayer = cc.Layer.extend({
ball:null,
ctor:function () {
this._super();
this.scheduleUpdate(); // 开启定时器 var winSize = cc.director.getWinSize();
var ball = new cc.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) {
var action = 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接口。

var ScheduleLayer = 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) {
var then = Date.now();
interval = interval*1000;
this.schedule(function () {
var now = Date.now();
var delta = now-then;
if(delta > interval){
then = now - (delta % interval); //如果本次触发延迟了,就让下次触发早一点来抵消误差
callback.call(this);
}
}.bind(this),0); // 0表示每帧触发
}

4. 取消定时器

  • 取消scheduleUpdate ,使用 node.unscheduleUpdate()
  • 取消scheduleOnce和schedule,使用node.unschedule()
var ScheduleLayer = 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(); //恢复

作者:写java的逗比叫z1
链接:http://www.jianshu.com/p/df26c8ef1671

cocos2d-js 定时器的更多相关文章

  1. js定时器的使用(实例讲解)

    在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);2.循环定 ...

  2. 移动Web与js定时器暂停或不准确计时的问题解决

    PC 上的 Firefox.Chrome 和 Safari 等浏览器,都会自动把未激活页面中的 JavaScript 定时器(setTimeout.setInterval)间隔最小值改为 1 秒以上: ...

  3. js定时器 特定时间执行某段程序的例子

    定时器想必大家并不陌生吧,在本文为大家详细介绍下js中是如何实现定时器的,具体原理及代码如下. 例子: $(function(){ var handler = function(){ //www.jb ...

  4. js定时器setInterval()与setTimeout()

    js定时器setInterval()与setTimeout() 1.setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setT ...

  5. C#-WebForm JS定时器

    JS定时器: 1.window.setTimeout(function(){},3000) 延迟3秒执行 2.window.setInterval(function(){},3000) 也叫重复器,每 ...

  6. cocos2d js jsb XMLHttpRequest 中文乱码

    1.首先讲下怎样使用XMLHttpRequest 下面所说的是在cocos2d-x 2.2.2 或者 2.3 版本号中. 首先要明确cocos2d js事实上分两个版本号,一个是html5的版本号,另 ...

  7. cocos2d js的一些tip

    cocos2d-js-v3.2-rc0 cc.director.end();//退出app cc.Application.getInstance().openURL("http://www. ...

  8. Vue清除所有JS定时器

    Vue清除所有JS定时器 在webpack + vue 的项目中如何在页面跳转的时候清除所有的定时器 JS定时器会有一个返回值(数字),通过这个返回值我们可以找到这个定时器 在vue项目中可以使用路由 ...

  9. cocos2d js ClippingNode 制作标题闪亮特效

    1.效果图: 之前在<Android 高仿 IOS7 IPhone 解锁 Slide To Unlock>中制作了文字上闪亮移动的效果,这次我们来看下怎样在cocos2d js 中做出类似 ...

  10. js定时器关闭,js定时器停止,一次关闭所有正在运行的定时器,自定义函数clearIntervals()一次关闭所有正在运行的定时器

    js定时器关闭,一次关闭所有正在运行的定时器,自定义函数clearIntervals()一次关闭所有正在运行的定时器,原理:利用数组存储定时器id,然后遍历数组,关闭定时器 附上页面的截图,代码在截图 ...

随机推荐

  1. ASP.NET Core 开源项目整理

    前言: 对 .NET Core 的热情一直没有下降过,新起的项目几乎都是采用 Core 来做开发. 跨平台是一个方面,另外就是 Core 很轻,性能远超很多开发语言(不坑). 一.ASP.NET Co ...

  2. 交换排序—冒泡排序(Bubble Sort)算法原理以及Java实现

    基本思想: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将 ...

  3. mysql 授予远程连接直接访问

    不通过ssh通道,mysql 授予远程连接直接访问 语句 GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '!DSJdg!' WITH GR ...

  4. JavaScript实现文章复制加版权信息

    function addLink() { var body_element = document.getElementsByTagName('body')[0]; var selection; if( ...

  5. 分布式事务_03_2PC框架raincat源码解析-事务提交过程

    一.前言 前面两节,我们已经将raincat的demo工程启动,并简单分析了下事务协调者与事务参与者的启动过程. 这一节,我们来看下raincat的事务提交过程. 二.事务提交过程概览 1.二阶段对应 ...

  6. Unity自带寻路Navmesh

    自带寻路Navmesh的三大组件: 1.Nav Mesh Agent:主要挂在寻路物体上 2.Off Mesh Link:实现区域转移功能(例如,有时不一定只是在地面上进行寻路,可能有些高高的平台,平 ...

  7. ICE 的回调

    使用分布式计算中间件ICE到现在已经有一年多了,在这一年里里面对ICE的理解.应用比较熟悉. 使用ICE写分布式软件,确实是很方便:ICE比较稳定.可靠,调用返回速度低延迟,使用简单,学习曲线不是很陡 ...

  8. 【JVM】java的内存泄露问题

    一.GC可回收的对象 二:什么是内存泄露--->Java的一个最显著的优势是内存管理.你只需要简单的创建对象而不需要负责释放空间,因为Java的垃圾回收器会负责内存的回收.然而,情况并不是这样简 ...

  9. ORACLE删除用户的有的表的方法

    首先我们查询oracle用户下的所有表 select * from all_tab_comments -- 查询所有用户的表,视图等select * from user_tab_comments    ...

  10. linux 内存释放命令

    我使用的是CentOS 6.5 ,由于卸载Solr 后发现内存占用挺多的,我想释放一下内存,就查阅了一些资料,分享给大家: 1.free -m  查看内存的使用情况,-m表示单位是兆 2.echo 1 ...