在游戏中,时常需要隔一段时间更新一些数据或者是人物位置,Cocosd-x提供了一个很好的功能给我们使用,那就是schedule,它是什么东西?我们可以简单地认为它是定时器(时间调度),是单线程的定时器,所有CCNode 类的子类都有这样的函数。使用示例如下:
1 //schedule_selector 选择器将调用函数名称传进来。第二个参数是时间间隔
2 schedule(schedule_selector(调用函数), 0.5f);
3
4 //定义上面函数以后就会隔一段时间调用一次该函数,直到unschedule 被调用。这句被调用,之前schedule 的时间调度将结束。
5 unschedule(schedule_selector(要取消的调用函数));
6
7 // 暂停schedule
8 m_pPausedTargets = pDirector->getScheduler()->pauseAllTargets();
9 CC_SAFE_RETAIN(m_pPausedTargets);
10 // 重新启动schedule
11 pDirector->getScheduler()->resumeTargets(m_pPausedTargets);
12 CC_SAFE_RELEASE_NULL(m_pPausedTargets);
13
14 //使用unscheduleAllSelectors()可以使所有schedule停止.
15 CCDirector::sharedDirector()->getScheduler()->unscheduleAllSelectors();
还有一种固定的调用方式,就是使用scheduleUpdate 会在每帧调用一次update 方法,只要重载update 方法即可。
1 //在init函数中加入,把scheduleUpdate加入后,在每帧都会调用update函数。
2 this->scheduleUpdate();
3
4 //参数是上一次调用这个函数到本次调用这个函数,中间间隔了多少秒
5 void HelloWorld::update( float fDelta )
6 {
7 }
当然还有一个定时器的方法,那就是scheduleOnce,多少秒后只执行一次。
1 //5秒后执行函数,只执行一次。参数:执行函数、延迟多少秒。表示多少秒之后开始执行这个函数,并且只执行一次。
2 scheduleOnce(schedule_selector(执行函数), 5.0f);
好了,定时器介绍到这里就算结束了。