我是定时器—HelloWorld之scheduleUpdate

原文地址http://blog.csdn.net/musicvs/article/details/8550403

正文:

 

 

1. scheduleUpdate

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

  1. bool HelloWorld::init()  
  2. {  
  3.     bool bRet = false;  
  4.     do   
  5.     {  
  6.         CC_BREAK_IF(! CCLayer::init());  
  7.   
  8.         this->scheduleUpdate();  
  9.   
  10.         bRet = true;  
  11.     } while (0);  
  12.   
  13.     return bRet;  
  14. }  


 

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

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

 

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

  1. class HelloWorld : public cocos2d::CCLayer  
  2. {  
  3. public:  
  4.     virtual bool init();    
  5.     static cocos2d::CCScene* scene();  
  6.     void menuCloseCallback(CCObject* pSender);  
  7.     CREATE_FUNC(HelloWorld);  
  8.   
  9.     /* update函数 */  
  10.     virtual void update(float fDelta);  
  11. };  


 

然后在函数里打印日志:

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


 

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

update

update

update

update

update

update

update

update

Update

(小若:!!!)

 

 

2. 轻微解释原理

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

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

 

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

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

 

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

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

 

 

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

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

 

关于定时这个问题嘛,总有人喜欢不准时的~下一节再介绍那些永远都准时的人~

(小若:吊胃口什么的对我才没有效!)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值