cocos2dx学习之路----第十二篇(关于Node节点的自我更新函数Update探讨及定时器的使用)

这一篇来谈谈关于Node节点比较重要的函数接口,自我更新接口(update)以及定时器。

好,下面先来谈谈节点的自我更新。

每一个Node节点都有自带一个update函数。而当调用ScheduleUpdate()这一方法便会被开启,在每一帧被调用。

我们可能注意到,在AppDelegate中有个setAnimationInterval()的方法,有导演类调用。而这个方法就是设置渲染的帧率的。默认是以60帧每秒进行渲染。当然,并不是真正的每秒就渲染60次,这个只能是差不多达到这个速率,因为程序在运行过程中会耗时,特别是执行一些比较耗时的方法。

那么,既然是这样,如果开启来我们更新函数update,那么程序就会以这个时间(1/60秒 = 0.01666秒)去调用每次的update函数,而这个时间便作为update的参数传入。

通过开启节点的update方法可以实现节点自己的逻辑代码的更新。

好,接着我们再说说定时器,如果要在cocos中使用定时器,需要用到Scheduler这一个类来使用,称为调度器。而这一个类的也被整理到Node中,然后提供我们使用它的方法。通过它的一系类方法可以实现我们所谓的定时器。我列出它其中一个开启定时器的方法,理解了这个,也就可以理解其它方法了。如下:

/****************************
**参数1:调度器调用的回调方法
**参数2:调度器每隔'interval‘秒调用一次
**参数3:调用(repeat+1)次
**参数4:第一次开始调用时隔’delay‘秒
******************************
void Node::schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay);
对于第二个参数,如果把时间设置为0,那么,将会像update一样每一帧被调用,不过如果这样,建议使用ScheduleUpdate方法调用自身的update函数。对于第三个参数,如果要一直调用,可以通过宏定义CC_REPEAT_FOREVER来设置。

好,那么我们现在就来看看这次的测试中如何来应用,先来看看运行结果:


上面一个节点是通过调用ScheduleUpdate方法来进行自我的位置更新,下面一个则是使用定时器的方法来进行更新。我们还可以看到有Start、Remove以及PauseCurrentTarget、ResumeCurrentTarget的菜单条目。它们是用来对调度器的操作的。需要提及的一点是,在调度器被开启的时候,我们可以通过获取当前被调度的函数来识别该调度器是否被开启,即通过调用IsSchedule这一方法。而对于函数自身节点的update是检测不到的自身的update只能是开启或者移除。这点需要注意一下。对于最下面的Pause和Resume可以对节点的所有调度器进行停止恢复。这也是很有用的一个方法。

好了,话不多说。来看看源码吧:

SchedulerTest.h:

#ifndef __SCHEDULER_TEST__
#define __SCHEDULER_TEST__

#include"cocos2d.h"
USING_NS_CC;

class SchedulerTest :public Scene{
public:
	static Scene *createScene();
	virtual bool init();
	CREATE_FUNC(SchedulerTest);

	void update(float dt);
	void Own_Update(float dt);

	//准备状态的函数
	void ReadyFunc(float dt);

private:
	Size visibleSize;
};
#endif
SchedulerTest.cpp:

#include"SchedulerTest.h"

Scene *Sche
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值