假设我们面临一个需求:每隔几秒钟执行一次函数。不知各位看官会想怎么实现呢?我们可以利用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参数,这个参数代表上一次调用这个函数到本次调用这个函数之间间隔多少秒。