cocos2d-x特效之CCControlPotentiometer

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


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


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

声明文件

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

定义部分:

copy

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

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...