cocos2dx中有三种定时器:schedule,scheduleUpdate,scheduleOnce。功能分别是 每隔几秒调用自定义函数、调用系统默认的update()函数、只调用一次自定义函数
1、scheduleUpdate
加入当前节点后,程序会每帧都会自动执行一次默认的Update函数。(注:一定是Update函数哦,若想调用其他自己命名的函数则使用schedule)
看例子,走起。
1、首先在HelloWord类的头文件中声明Update函数:
void Update(float dt); //注意参数类型
2、然后在HelloWorld类源文件中实现函数Update:
voidHelloWorld::Update(float dt)
{
CCLOG("baibai");
}
现在我们可以调用了,在需要他不断执行的地方加入调用的代码就ok:
this->scheduleUpdate(); //开启定时器 运行之后你将会看到不断有baibai被打印出来
3、停止方法:
this->unscheduleUpdate();
2、schedule
功能:每隔几秒执行一次函数
1、首先还是在HelloWorld中声明所要执行的函数:
void Move(float dt);
2、然后在源文件实现:
void HelloWorld::Move(floatdt)
{
CCLOG("baibai");
}
现在去执行他,注意参数哦
this->schedule(schedule_selector(HelloWorld::Move),1.0f); //开启定时器 每隔1.0f执行一次,省略参数则表示每帧都要执行
运行之后,baibai每隔1.0f才会被打印一次。
3、停止方法:
this->unschedule(schedule_selector(HelloWorld::Move));
3、scheduleOnce
功能:在几秒之后执行,并且只会执行一次。
1、首先还是在HelloWorld中声明所要执行的函数:
void Move(float dt);
2、然后在源文件实现:
void HelloWorld::Move(floatdt)
{
CCLOG("baibai");
}
现在去执行他,注意参数哦
this->scheduleOnce(schedule_selector(HelloWorld::Move),1.0f); //开启定时器 在1.0f之后执行,并且只执行一次。
运行一下,baibai只是被打印了一次就完了。。。
ok,定时器的调用已经讲完了,大家不妨自己写一些函数体验一下。
4、停止所有计时器
this->unscheduleAllSelectors();