【爱上cocos2d-x之十四】每一帧都调用,scheduleUpdate和update

假设我们面临一个需求:每隔几秒钟执行一次函数。不知各位看官会想怎么实现呢?我们可以利用cocos2d-x提供的schedule来解决。
我们新建一个项目为HelloSchedule,将HelloWorldScene的init函数的多余代码删除,然后改成如下几行代码:

bool HelloWorld::init(){
    if ( !CCLayer::init() )   
    {       
         return false;    
    }  
    this->scheduleUpdate();
    return true;
}

还要记得在头文件中加入update函数的声明

class HelloWorld : public cocos2d::CCLayer{
public:    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone    
virtual bool init();  // there's no 'id' in cpp, so we recommend returning the class instance pointer    
static cocos2d::CCScene* scene();     // implement the "static node()" method manually    
CREATE_FUNC(HelloWorld);
 /* 重写update函数 */
 virtual void  update(float dt);
};

然后在cpp文件中来具体实现这个update函数

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

最后,在Debug模式下运行,我们可以看到如下结果:

这时候我们就已经实现定时器了。
现在我们来总结一下。通过this->scheduleUpdate()函数可以在每一帧都调用一次update函数。update函数里面的有一个float dt参数,这个参数代表上一次调用这个函数到本次调用这个函数之间间隔多少秒。

:867::867::867::867:

楼主把以前的<<爱上cocos2d-x系列>>都发上来吧, 我帮你整个索引让更多的人看到

:14: 嘿嘿,好的哈

嗯, 我们共同努力, 打造比CSDN更强的专业论坛:875::875::875::875:

:7: :7: :7: :7: :7: 顶版主,一起努力!!!

比CSDN更专业。。。:2::2::2:

:11: :11: :11:那各位版主就要多加辛苦了