cocos2d-js浅谈schedule的用法

cocos2d-js浅谈schedule的用法,第1张

概述展性及实用性上,建议大家统一使用cocos2d自身提供的schedule方法。下面就为大家深入浅出的介绍下schedule: 一、schedule 有三种不同的api: 1. scheduleUpdate(): 2. scheduleOnce(callback, delay, key): Parameters: {function} callback A function wrapped as a 展性及实用性上,建议大家统一使用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,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 this.scheduleUpdate();//开启每帧调用,对应update
接着重写layer的update方法:(这里先定义了一个layer的成员变量time)
[JavaScript] view plain copy update:function(dt){ this.time+=dt;//dt为上一帧到当前帧的时长 if(this.time>=3){ cc.log("每3秒在调试框中输出一次"); this.time=0; }; },
2.scheduleOnce(callback,key)

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

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

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

[JavaScript] view plain copy //不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次 bsp;this.schedule(this.notParameter,2,20,5);
接着新建一个notParameter的方法:
[JavaScript] view plain copy notParameter:function(){ cc.log("不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次"); }, 三、schedule的代码示例: [JavaScript] view plain copy vartest=cc.Layer.extend({ time:0, ctor:function(){ this._super(); this.time=0; this.scheduleUpdate();//开启每帧调用,对应update //不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次 this.schedule(this.notParameter,5); //带参数的回调函数haveParameter,每1.5秒执行一次,累积执行10次 this.schedule(functionnothing(){ this.haveParameter("带参数") },1.5,10); //每5秒执行一次,无次数限制 this.schedule(this.notRepeat,5); //延迟2秒后,只执行一次 this.scheduleOnce(this.once,2); returntrue; }, notRepeat:function(){ cc.log("每5秒执行一次"); }, notParameter:function(){ cc.log("不带参数的回调函数notParameter,延迟5秒后每2秒执行一次,累积执行20次"); }, haveParameter:function(s){ cc.log(s+"的回调函数haveParameter,每1.5秒执行一次,累积执行10次"); }, once:function(){ cc.log("延迟2秒后,只执行一次"); }, update:function(dt){ this.time+=dt;//dt为上一帧到当前帧的时长 if(this.time>=3){ cc.log("每3秒在调试框中输出一次"); this.time=0; }; }, onExit:function(){ this._super(); this.unscheduleUpdate();//移除schedule this.unschedule(this.notRepeat);//移除没有次数限制的schedule this.unscheduleAllCallbacks();//移除所有schedule的回调函数 } }); 总结

以上是内存溢出为你收集整理的cocos2d-js浅谈schedule的用法全部内容,希望文章能够帮你解决cocos2d-js浅谈schedule的用法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1081650.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存