Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2dx 对全部动作或单个动作速度的改变大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一、对全部CCActionInterval动作进行加速或减速,这个很简单只要一句代码就可以。

[cpp] view plain copy @L_197_3@
  1. CCDirector::sharedDirector()->getscheduler()->setTimeScale(2);//以目前2倍速度播放
  2. CCDirector::sharedDirector()->getscheduler()->setTimeScale(0.5);//以目前0.5倍速度播放

二、对个别单个动作进行加速或减速

有两种方法

1.通过CCSpeed实现

[cpp] view plain copy @L_197_3@
  1. CCSprite*sprite=CCSprite::create();
  2. CCActionInterval*jump=CCJumpBy::create(4,ccp(0,0),100,4);
  3. sprite->runAction(CCSpeed::create(jump,2));//以2倍速度播放动作


2.通过CCActionManager实现,着重讲这个方法

[cpp] view plain copy @L_197_3@
  1. CCscheduler*scheduler1;
  2. voidHelloWorld::myInit11()
  3. {
  4. CCSizesize=CCDirector::sharedDirector()->getWinSize();
  5. CCControlSlider*slider1=CCControlSlider::create("sliderTrack.png","sliderProgress.png","sliderThumb.png");
  6. slider1->setPosition(ccp(size.width/4*2,size.height*0.3));
  7. this->addChild(slider1);
  8. slider1->setTag(1);
  9. //最小值
  10. slider1->setMinimumValue(0);
  11. //最大值
  12. slider1->setMaximumValue(5);
  13. //回调函数
  14. slider1->addTargetWithActionForControlEvents(this,cccontrol_@R_489_10288@ctor(HelloWorld::sliderAction),CCControlEventValueChanged);
  15. //Createanewscheduler,andlinkittothemainscheduler
  16. scheduler1=newCCscheduler();
  17. CCDirector::sharedDirector()->getscheduler()->scheduleupdateForTarget(scheduler1,false);
  18. //CreateanewActionManager,andlinkittothenewscheudler
  19. CCActionManager*actionManager1=newCCActionManager();
  20. scheduler1->scheduleupdateForTarget(actionManager1,false);
  21. //左边精灵
  22. CCActionInterval*jump1=CCJumpBy::create(4,4);
  23. CCActionInterval*jump2=jump1->reverse();
  24. CCSequence*seq=CCSequence::create(jump2,jump1,null);
  25. CCRepeatForever*action=CCRepeatForever::create(seq);
  26. CCSprite*left=CCSprite::create("Icon.png");
  27. left->setPosition(ccp(size.width/4*1,size.height*0.5));
  28. this->addChild(left);
  29. //IMPORTANT:SettheactionManagerrunninganyaction
  30. left->setActionManager(actionManager1);
  31. left->runAction(action);
  32. //中间精灵
  33. CCSprite*middle=CCSprite::create("Icon.png");
  34. @H_464_18@middle->setPosition(ccp(size.width/4*2,size.height*0.5));
  35. this->addChild(middlE);
  36. @H_464_18@middle->setActionManager(actionManager1);
  37. @H_464_18@middle->runAction(CCRepeatForever::create(CCRotateBy::create(2,360)));
  38. //右边精灵
  39. CCSprite*right=CCSprite::create("Icon.png");
  40. right->setPosition(ccp(size.width/4*3,size.height*0.5));
  41. this->addChild(right);
  42. CCActionInterval*scale1=CCScaleBy::create(1,2);
  43. CCActionInterval*scale2=scale1->reverse();
  44. CCSequence*seq2=CCSequence::create(scale1,scale2,null);
  45. CCRepeatForever*action2=CCRepeatForever::create(seq2);
  46. right->setActionManager(actionManager1);
  47. right->runAction(action2);
  48. }
  49. voidHelloWorld::sliderAction(CCObject*pSender,CCControlEventcontrolEvent)
  50. {
  51. CCControlSlider*pSliderCtl=(CCControlSlider*)pSender;
  52. floatvalue=pSliderCtl->getValue();
  53. scheduler1->setTimeScale(value);
  54. }
  55. HelloWorld::~HelloWorld()
  56. {
  57. scheduler1->release();
  58. }

大佬总结

以上是大佬教程为你收集整理的cocos2dx 对全部动作或单个动作速度的改变全部内容,希望文章能够帮你解决cocos2dx 对全部动作或单个动作速度的改变所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。