------------------------------------------------------------
定时调度器 CCScheduler
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); };
cpp
CCControlSlider* SchedulerTimeScale::sliderCtl() { //添加一个滑动条用来控制动画速度 CCControlSlider * slider = CCControlSlider::create("sliderTrack2.png","sliderProgress2.png" ,"sliderThumb.png"); //滑动条数值产生变化时调用自定义的<span style="font-family: Arial, Helvetica, sans-serif;">sliderAction来执行setTimeScale</span> 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::create(4, 360*2); CCActionInterval *rot2 = rot1->reverse(); CCSequence* seq3_1 = CCSequence::create(jump2, jump1, NULL); CCSequence* seq3_2 = CCSequence::create(rot1, rot2, NULL); CCFiniteTimeAction* spawn = C