您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x学习笔记(十六)之 定时器(时间调度)

2013-08-23 14:17 387 查看
  在游戏中,时常需要隔一段时间更新一些数据或者是人物位置,Cocosd-x提供了一个很好的功能给我们使用,那就是schedule,它是什么东西?我们可以简单地认为它是定时器(时间调度),是单线程的定时器,所有CCNode 类的子类都有这样的函数。使用示例如下:

//schedule_selector 选择器将调用函数名称传进来。第二个参数是时间间隔
schedule(schedule_selector(调用函数), 0.5f);

//定义上面函数以后就会隔一段时间调用一次该函数,直到unschedule 被调用。这句被调用,之前schedule 的时间调度将结束。
unschedule(schedule_selector(要取消的调用函数));

// 暂停schedule
m_pPausedTargets = pDirector->getScheduler()->pauseAllTargets();
CC_SAFE_RETAIN(m_pPausedTargets);
// 重新启动schedule
pDirector->getScheduler()->resumeTargets(m_pPausedTargets);
CC_SAFE_RELEASE_NULL(m_pPausedTargets);

//使用unscheduleAllSelectors()可以使所有schedule停止.
CCDirector::sharedDirector()->getScheduler()->unscheduleAllSelectors();


  还有一种固定的调用方式,就是使用scheduleUpdate 会在每帧调用一次update 方法,只要重载update 方法即可。

//在init函数中加入,把scheduleUpdate加入后,在每帧都会调用update函数。
this->scheduleUpdate();

//参数是上一次调用这个函数到本次调用这个函数,中间间隔了多少秒
void HelloWorld::update( float fDelta )
{
}


  当然还有一个定时器的方法,那就是scheduleOnce,多少秒后只执行一次。

//5秒后执行函数,只执行一次。参数:执行函数、延迟多少秒。表示多少秒之后开始执行这个函数,并且只执行一次。
scheduleOnce(schedule_selector(执行函数), 5.0f);


  好了,定时器介绍到这里就算结束了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: