温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

[cocos2d-x]定时器函数scheduleUpdate

发布时间:2020-07-10 10:19:56 来源:网络 阅读:301 作者:蓬莱仙羽 栏目:游戏开发

正文:

1. scheduleUpdate

我们现在来新建一个Cocos2d-x的项目,然后把HelloWorldSceneinit函数的多余代码删掉,然后我们敲一行代码:

bool HelloWorld::init() {     bool bRet = false;     do     {         CC_BREAK_IF(! CCLayer::init());          this->scheduleUpdate();          bRet = true;     } while (0);      return bRet; }

然后大家运行项目,有没有发现?神奇的事情发生了!

(小若:哪里?什么都没有!黑屏!)

别着急,还差一步(小若:你有妹妹吗?帮我问候一下?),我们要继承一个函数,在头文件里加入一句:

class HelloWorld : public cocos2d::CCLayer { public:     virtual bool init();     static cocos2d::CCScene* scene();     void menuCloseCallback(CCObject* pSender);     CREATE_FUNC(HelloWorld);  	/* update函数 */ 	virtual void update(float fDelta); };

然后在函数里打印日志:

void HelloWorld::update( float fDelta ) { 	CCLOG("update"); }

最后,用调试模式运行,我们将看到一串串的日志输出:

update

update

update

update

update

update

update

update

Update

(小若:!!!)

2. 轻微解释原理

这倒底是什么情况?我们已经实现了定时器了,就是这么简单。我稍微解释一下,不会太深入。

(小若:你也没有那个水平= =

this->scheduleUpdate()函数是为了把当前节点(比如CCLayer)添加到队列里,也许不是队列,总是一个队列。

(小若:算了,你别解释了。。。)

只要把节点添加到队列里(或许是其它结构,总之可以存放节点),那么这个节点就会在游戏运行的每一帧被调用一次update函数。

我们也看到,update函数里有一个float fDelta参数,这个参数的意思是,上一次调用这个函数到本次调用这个函数,中间间隔了多少秒。

好了,只是介绍性的教程,就不说得太多了。

(小若:等等!这根本就不像定时器!一点都不定时!!)


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI