cocos2d-x 真正的定时器之schedule

时间:2022-01-04 09:00:13

转载请注明,原文地址:http://blog.csdn.net/musicvs/article/details/8551066

正文:

1. 不调用update函数,调用自己的函数

其实原理是一样的,我们调用scheduleUpdate的时候,系统默认每帧去调用update函数,但如果我们想调用自己的函数呢?很简单,先给HelloWorldScene添加一个函数:

  1. private:
  2. /* 自定义的update函数 */
  3. void MutUpdate(float fDelta);

同样在函数里打日志:

  1. void HelloWorld::MutUpdate( float fDelta )
  2. {
  3. CCLOG("MutUpdate");
  4. }

然后我们要添加一句很暴力的代码:

  1. bool HelloWorld::init()
  2. {
  3. bool bRet = false;
  4. do
  5. {
  6. CC_BREAK_IF(! CCLayer::init());
  7. //this->scheduleUpdate();
  8. /* 指定每帧执行自定义的函数 */
  9. this->schedule(schedule_selector(HelloWorld::MutUpdate));
  10. bRet = true;
  11. } while (0);
  12. return bRet;
  13. }

我们使用schedule指定了一个自定义的函数,然后我们用调试模式运行项目,将看到以下输出:

MutUpdate

MutUpdate

MutUpdate

MutUpdate

MutUpdate

MutUpdate

MutUpdate

MutUpdate

我想,没有什么可以解释的,就是指定了一个回调函数。

(小若:其实他不懂。)

2. 真正的定时

好喇,我们要真正创建一个定时器了,我们修改一下schedule的参数就可以了:

  1. this->schedule(schedule_selector(HelloWorld::MutUpdate), 1.0f);

第二个参数的意思是,每隔多少秒执行一次MutUpdate函数,记住,单位是秒。