CCScheduler可以算是个计时器,可以根据需要通过此类下的各种方法设定计时来执行回调函数,达到计时控制精灵、动画的作用。官方原例中已经演示了这个类的具体使用方法,这里就记录一下使用方法:
1.setTimeScale
用于减慢或者快进动画,其默认参数值为1.0,低于此值时计时器会放慢,否则加快,下面是代码:
class SchedulerTimeScale : public cocos2d::CCLayer
{
public:
void onEnter();
void onExit();
CCControlSlider* sliderCtl();
void sliderAction(CCObject* pSender, CCControlEvent controlEvent);
CCControlSlider* m_pSliderCtl;
CREATE_FUNC(SchedulerTimeScale);
};
CCControlSlider* SchedulerTimeScale::sliderCtl()
{
//添加一个滑动条用来控制动画速度
CCControlSlider * slider = CCControlSlider::create("sliderTrack2.png","sliderProgress2.png" ,"sliderThumb.png");
//滑动条数值产生变化时调用自定义的sliderAction来执行setTimeScale
slider->addTargetWithActionForControlEvents(this, cccontrol_selector(SchedulerTimeScale::sliderAction), CCControlEventValueChanged);
slider->setMinimumValue(-3.0f);
slider->setMaximumValue(3.0f);
slider->setValue(1.0f);
return slider;
}
void SchedulerTimeScale::sliderAction(CCObject* pSender, CCControlEvent controlEvent)
{
CCControlSlider* pSliderCtl = (CCControlSlider*)pSender;
float scale;
scale = pSliderCtl->getValue();
//这里由导演取得所有动画的计时器并执行setTimeScale
CCDirector::sharedDirector()->getScheduler()->setTimeScale(scale);
}
void SchedulerTimeScale::onEnter()
{
CCLayer::onEnter();
CCSize s = CCDirector::sharedDirector()->getWinSize();
// rotate and jump
CCActionInterval *jump1 = CCJumpBy::create(4, ccp(-s.width+80,0), 100, 4);
CCActionInterval *jump2 = jump1->reverse();
CCActionInterval *rot1 = CCRotateBy::crea