Cocos2d-x 3.2:定时器的使用和原理探究(1)
本文转载至深入了解Cocos2d-x 3.x:定时器的使用和原理探究(1)
注:本文开始,引擎升级到Cocos2d-x 3.6
在游戏开发过程中,经常会遇到使用计时器的情况,例如:倒计时,定时炸弹等。scheduler是Cocos2d-x 2.x时代就已经存在的产物,主要用于各种延时函数以及各种每帧运行的函数。本文主要介绍scheduler的API函数以及使用方法。
首先,所有继承Node的类都可以使用scheduler,以下是Node类下相关API的介绍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
|
接下来用一个简单的倒计时例子来学习API的使用,首先看看实现效果:
具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
方法1与方法2实现的效果完全一样,区别在于一个使用了Lambda函数,一个使用了传统的方法。
接下来简单说一下scheduleOnce,这个函数用于延时执行,比如可以实现2秒后删除自身,具体代码如下:
1 2 3 4 |
|
scheduleOnce是一个非常有用的函数,在很多场合都会用到。
然后再来看看scheduleUpdate,这是一个与其他函数有所区别,启动的是一个Node::update方法,启动之后这个方法每帧执行,而且会优先于自定义计时器执行,也可以指定优先级。
接下来我们想实现一个移动动画,每秒钟固定向左边移动一定的距离,通过scheduleUpdate实现,以下是实现代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
本文通过一些基础的定时器应用分析了Cocos2d-x中scheduler的基本使用方法,在项目中会有更多定时器的应用场景。下一篇文章将对创建定时器的实现进行分析。