微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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. }

原文地址:https://www.jb51.cc/cocos2dx/341524.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐