cocos2d-x特效之CCControlPotentiometer

前端之家收集整理的这篇文章主要介绍了cocos2d-x特效之CCControlPotentiometer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在test示例下面,有一个关于此功能代码,实现的效果如下:


通过拉动可旋转的按钮,从而改变所代表的值,这个效果的确是很棒的,但,和我的需求有一些差别,先贴上我实现的效果


先看先第一张图,头像环绕的进度条从0开始,直到最后显示效果如第二张图所示,整个过程采用定时器来完成,和示例中的通过手拖动旋转按钮表面上不同(头像没有旋转),其实,原理是一样的,那张头像不过是放到上面的,头像下面仍有一个旋转的图片,只是我们看不到而已,来看下代码

声明文件

  1. #ifndef__loading__Potentiometer__@H_403_33@
  2. #define__loading__Potentiometer__@H_403_33@
  3. @H_403_33@
  4. #include<iostream>@H_403_33@
  5. #include"cocos-ext.h"@H_403_33@
  6. #include"cocos2d.h"@H_403_33@
  7. USING_NS_CC;@H_403_33@
  8. classPotentiometer:publiccocos2d::extension::CCControlPotentiometer@H_403_33@
  9. {@H_403_33@
  10. public:@H_403_33@
  11. boolinit();@H_403_33@
  12. staticCCScene*scene();@H_403_33@
  13. CREATE_FUNC(Potentiometer);@H_403_33@
  14. voidvalueChange(CCObject*pSender,cocos2d::extension::CCControlEventevent);@H_403_33@
  15. CCControlPotentiometer*poten;@H_403_33@
  16. };@H_403_33@
  17. #endif@H_403_33@
声明文件比较简单,定义了一个对象以及一个回调函数

定义部分:

copy

    #include"Potentiometer.h"@H_403_33@
  1. boolPotentiometer::init()@H_403_33@
  2. {@H_403_33@
  3. if(!CCControlPotentiometer::init())@H_403_33@
  4. returnfalse;@H_403_33@
  5. }@H_403_33@
  6. CCSizesize=CCDirector::sharedDirector()->getWinSize();@H_403_33@
  7. CCSprite*bg=CCSprite::create("fullbg.png");@H_403_33@
  8. this->addChild(bg);@H_403_33@
  9. bg->setPosition(ccp(size.width/2,size.height/2));//参数为:整个背景框,头像周围的进度条,以及旋转按钮@H_403_33@
  10. poten=CCControlPotentiometer::create("turn_bg.png","turn_timer.png","switch-thumb.png");@H_403_33@
  11. this->addChild(poten,1);@H_403_33@
  12. CCSprite*head=CCSprite::create("default_head_pic.png");//添加头像,使其遮挡旋转按钮@H_403_33@
  13. this->addChild(head,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> head->setPosition(ccp(size.width/2,size.width/2));@H_403_33@
  14. poten->setPosition(ccp(size.width/2,size.width/2));@H_403_33@
  15. //poten->setMaximumValue(1.0f);//设置可旋转的最大值,默认为1@H_403_33@
  16. //poten->setMinimumValue(0.0f);//设置可旋转的最小值,默认为0@H_403_33@
  17. //poten->setValue(0.1f);@H_403_33@
  18. schedule(schedule_selector(Potentiometer::valueChange),1);//添加回调事件,和下面屏蔽的一行效果相同,每隔一秒调用一次指定函数@H_403_33@
  19. //CCDirector::sharedDirector()->getScheduler()->scheduleSelector(SEL_SCHEDULE(&Potentiometer::valueChange),this,1,false);@H_403_33@
  20. true;@H_403_33@
  21. }@H_403_33@
  22. CCScene*Potentiometer::scene()@H_403_33@
  23. CCScene*scene=CCScene::create();@H_403_33@
  24. Potentiometer*layer=Potentiometer::create();@H_403_33@
  25. scene->addChild(layer);@H_403_33@
  26. returnscene;@H_403_33@
  27. voidPotentiometer::valueChange(CCObject*pSender,cocos2d::extension::CCControlEventevent)@H_403_33@
  28. floattmp=poten->getValue()+0.1f;//获得当前值(浮点型)并加0.1@H_403_33@
  29. poten->setValue(tmp);@H_403_33@
  30. if(tmp>=1)//如果值达到最大,则停止定时器@H_403_33@
  31. //CCDirector::sharedDirector()->getScheduler()->unscheduleSelector(SEL_SCHEDULE(&Potentiometer::valueChange),this);@H_403_33@
  32. unschedule(schedule_selector(Potentiometer::valueChange));//效果和上面一行相同@H_403_33@
  33. } @H_403_33@

猜你在找的Cocos2d-x相关文章