cocos2d-js浅谈schedule的用法

转载 2016年09月03日 16:52:05
展性及实用性上,建议大家统一使用cocos2d自身提供的schedule方法。下面就为大家深入浅出的介绍下schedule:

一、schedule 有三种不同的api:

1. scheduleUpdate():

2. scheduleOnce(callback, delay, key):

Parameters:

{function} callback

A function wrapped as a selector

{Number} delay

The amount of time that the first tick will wait before execution.

{String} key

The only string identifying the callback

3. schedule(callback, interval, repeat, delay, key):

Parameters:

{function} callback

A function wrapped as a selector

{Number} interval

Tick interval in seconds. 0 means tick every frame. If interval = 0, it's recommended to use scheduleUpdate() instead.

{Number} repeat

The selector will be executed (repeat + 1) times, you can use kCCRepeatForever for tick infinitely.

{Number} delay

The amount of time that the first tick will wait before execution.

{String} key

The only string identifying the callback


二、schedule三种api的使用:

1. scheduleUpdate()

以layer为例,在初始化的时候(ctor函数return true 前,其他地方也可以,建议在初始化时)添加:

[javascript] view plain copy
  1. this.scheduleUpdate(); //开启每帧调用,对应update  
接着重写layer的update方法:(这里先定义了一个layer的成员变量time)
[javascript] view plain copy
  1. update: function(dt) {  
  2.     this.time += dt; //dt 为上一帧到当前帧的时长  
  3.     if (this.time >= 3) {  
  4.         cc.log("每3秒在调试框中输出一次");  
  5.         this.time = 0;  
  6.     };  
  7. },  

2. scheduleOnce(callback, delay, key)

以layer为例,在初始化或其他非解析方法内添加:

[javascript] view plain copy
  1.         //延迟2秒后,只执行一次  
  2.         this.scheduleOnce(this.once, 2);  
接着新建一个once的方法:
[javascript] view plain copy
  1.     once: function() {  
  2.         cc.log("延迟2秒后,只执行一次");  
  3.     },  

3. schedule(callback, interval, repeat, delay, key)

同样以layer为例,在初始化或其他非解析方法内添加:

[javascript] view plain copy
  1.       //不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次  
  2. bsp;       this.schedule(this.notParameter, 2, 20, 5);  
接着新建一个notParameter的方法:
[javascript] view plain copy
  1.     notParameter: function() {  
  2.         cc.log("不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次");  
  3.     },  

三、schedule的代码示例:

[javascript] view plain copy
  1. var test = cc.Layer.extend({  
  2.     time: 0,  
  3.     ctor: function() {  
  4.         this._super();  
  5.         this.time = 0;  
  6.         this.scheduleUpdate(); //开启每帧调用,对应update  
  7.         //不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次  
  8.         this.schedule(this.notParameter, 2, 20, 5);  
  9.         //带参数的回调函数haveParameter,每1.5秒执行一次,累积执行10次  
  10.         this.schedule(function nothing() {  
  11.             this.haveParameter("带参数")  
  12.         }, 1.5, 10);  
  13.         //每5秒执行一次,无次数限制  
  14.         this.schedule(this.notRepeat, 5);  
  15.         //延迟2秒后,只执行一次  
  16.         this.scheduleOnce(this.once, 2);  
  17.         return true;  
  18.     },  
  19.     notRepeat: function() {  
  20.         cc.log("每5秒执行一次");  
  21.     },  
  22.     notParameter: function() {  
  23.         cc.log("不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次");  
  24.     },  
  25.     haveParameter: function(s) {  
  26.         cc.log(s + "的回调函数haveParameter,每1.5秒执行一次,累积执行10次");  
  27.     },  
  28.     once: function() {  
  29.         cc.log("延迟2秒后,只执行一次");  
  30.     },  
  31.     update: function(dt) {  
  32.         this.time += dt; //dt 为上一帧到当前帧的时长  
  33.         if (this.time >= 3) {  
  34.             cc.log("每3秒在调试框中输出一次");  
  35.             this.time = 0;  
  36.         };  
  37.     },  
  38.     onExit: function() {  
  39.         this._super();  
  40.         this.unscheduleUpdate(); //移除schedule  
  41.         this.unschedule(this.notRepeat); //移除没有次数限制的schedule  
  42.         this.unscheduleAllCallbacks();//移除所有schedule的回调函数  
  43.     }  
  44. }); 

cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce

今天白白跟大家分享一下cocos2dx中定时器的使用方法。
  • u010229677
  • u010229677
  • 2013年11月03日 19:59
  • 32471

【爱上cocos2d-x之十七】scheduleOnce定时器只调用一次

发现定时器的功能还真是蛮强大的,但是如果我们现在有一个需求:希望在几秒之后调用一个函数,而不是每个几秒调用这个函数。 那么,我们这时可以利用scheduleOnce可以来完成,顾名思义,Once,你...
  • Legendof1991
  • Legendof1991
  • 2014年03月27日 11:35
  • 1870

cocos2dx 3.x schedule的认识

1. schedule和update函数
  • lengxue789
  • lengxue789
  • 2014年08月06日 16:42
  • 10309

Cocos2d-x三种定时器的使用schedule,scheduleUpdate,scheduleOnce

Cocos2d-x三种定时器的使用schedule,scheduleUpdate,scheduleOnce 首先,什么是定时器呢?或许有时候我们想没个一定的时间周期性地在屏幕上生成一个精灵,或者周...
  • u014130695
  • u014130695
  • 2014年03月15日 22:45
  • 1530

cocos2dx schedule可延时的for循环 scheduleonce的问题

scheduleonce 只执行一次的时间函数,可以看做延迟执行。
  • no99es
  • no99es
  • 2014年08月28日 16:53
  • 1277

Cocos2dx之定时器schedule,scheduleUpdate,scheduleOnce的使用

cocos2dx中有三种定时器:schedule,scheduleUpdate,scheduleOnce。功能分别是 每隔几秒调用自定义函数、调用系统默认的update()函数、只调用一次自定义函数 ...
  • yangxuan0261
  • yangxuan0261
  • 2014年03月05日 22:49
  • 1887

cocos Creator计时器schedule的使用和坑

在游戏开发中,经常会用到计时器,在cocos引擎中,为我们默认提供了多种计时器的使用。在最新的cocos开发工具Cocos Creator中,我们有4种计时器可以使用,分别是js自带的setTimeO...
  • u013152587
  • u013152587
  • 2017年05月02日 22:58
  • 2938

cocos2dx三种定时器的使用以及停止scheduleUpdate,scheduleOnce,schedule(改)

(Sam: 原文作者有笔误,影响理解,这里做了正确的修改) 首先,什么是定时器呢?或许你有时候会想让某个函数不断的去执行,或许只是执行一次,获取你想让他每隔几秒执行一次,ok,这些都可以统统交给定时...
  • u012839224
  • u012839224
  • 2015年01月24日 17:43
  • 1604

nodejs模块 node-schedule使用,定时任务

一. 安装 npm install node-schedule 二. 使用 例子通过定时访问url展示 1.确定的时间...
  • zzwwjjdj1
  • zzwwjjdj1
  • 2016年07月13日 17:06
  • 17641

浅析schedule和回调函数

原文地址:
  • cbbbc
  • cbbbc
  • 2014年08月08日 10:42
  • 1515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-js浅谈schedule的用法
举报原因:
原因补充:

(最多只允许输入30个字)