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

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

                         

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

声明文件:

#ifndef __loading__Potentiometer__
#define __loading__Potentiometer__ #include <iostream>
#include "cocos-ext.h"
#include "cocos2d.h"
USING_NS_CC;
class Potentiometer :public cocos2d::extension::CCControlPotentiometer
{
public:
bool init();
static CCScene *scene();
CREATE_FUNC(Potentiometer);
void valueChange(CCObject* pSender, cocos2d::extension::CCControlEvent event );
CCControlPotentiometer *poten;
}; #endif

声明文件比较简单,定义了一个对象以及一个回调函数。

定义部分:

#include "Potentiometer.h"
#include "cocos2d.h"
bool Potentiometer::init()
{
if(!CCControlPotentiometer::init())
{
return false;
}
CCSize size=CCDirector::sharedDirector()->getWinSize();
CCSprite *bg=CCSprite::create("fullbg.png");
this->addChild(bg);
bg->setPosition(ccp(size.width/2, size.height/2)); //参数为:整个背景框,头像周围的进度条,以及旋转按钮
poten=CCControlPotentiometer::create("turn_bg.png", "turn_timer.png", "switch-thumb.png");
this->addChild(poten,1);
CCSprite *head=CCSprite::create("default_head_pic.png"); //添加头像,使其遮挡旋转按钮
this->addChild(head,1);
head->setPosition(ccp(size.width/2, size.width/2));
poten->setPosition(ccp(size.width/2, size.width/2));
// poten->setMaximumValue(1.0f); //设置可旋转的最大值,默认为1
// poten->setMinimumValue(0.0f); // 设置可旋转的最小值,默认为0
//poten->setValue(0.1f);
schedule(schedule_selector(Potentiometer::valueChange),1); //添加回调事件,和下面屏蔽的一行效果相同,每隔一秒调用一次指定函数
//CCDirector::sharedDirector()->getScheduler()->scheduleSelector(SEL_SCHEDULE(&Potentiometer::valueChange), this, 1, false);
return true;
}
CCScene *Potentiometer::scene()
{
CCScene *scene=CCScene::create();
Potentiometer *layer=Potentiometer::create();
scene->addChild(layer);
return scene;
}
void Potentiometer::valueChange(CCObject *pSender, cocos2d::extension::CCControlEvent event)
{
float tmp=poten->getValue()+0.1f; //获得当前值(浮点型)并加0.1
poten->setValue(tmp);
if(tmp>=1) //如果值达到最大,则停止定时器
{
//CCDirector::sharedDirector()->getScheduler()->unscheduleSelector(SEL_SCHEDULE(&Potentiometer::valueChange), this);
unschedule(schedule_selector(Potentiometer::valueChange)); // 效果和上面一行相同
}
}

cocos2d-x特效之CCControlPotentiometer的更多相关文章

  1. Cocos2d-x CCControlPotentiometer之圆形音量button及特效

    1. 圆形音量button 事实上作者的本意应该是叫做"电位计button".可是我觉得它和我们的圆形音量button非常像,所以就这么叫它吧~先看效果: 好了,不多解释,本篇到此 ...

  2. SpriteBuilder&Cocos2D使用CCEffect特效实现天黑天亮过度效果

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在动作或RPG类游戏中我们有时需要天黑和天亮过度的效果来完成场 ...

  3. cocos2d 特效

    一.特效概念 特效是让精灵(CCSprite)执行某种特殊的效果.其实,特效也是一种动画! 但是,为什么要把特效与动画区分呢?因为,特效是基于网格属性来进行的. 如何区分动画与特效?简单的将,当使用到 ...

  4. SpriteBuilder&amp;Cocos2D使用CCEffect特效实现天黑天亮过度效果

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 在动作或RPG类游戏中我们有时须要天黑和天亮过度的效果来完毕场 ...

  5. cocos2d js ClippingNode 制作标题闪亮特效

    1.效果图: 之前在<Android 高仿 IOS7 IPhone 解锁 Slide To Unlock>中制作了文字上闪亮移动的效果,这次我们来看下怎样在cocos2d js 中做出类似 ...

  6. [一位菜鸟的COCOS-2D编程之路]COCOS2D中得动作,特效和动画

    一,CCActionManager 管理所有节点动作的对象 来看看打飞机里面的一个onEnter 方法 - (void)onEnter { [super onEnter]; //一定要注意添加此方法, ...

  7. cocos2d触碰例子代码

    // // TestLayer.h // MiniTD // // Created by OnePiece on 12-7-30. // Copyright 2012年 __MyCompanyName ...

  8. cocos2d学习笔记

    doxygen工具 生成cocos2d的api文档 位图字体编辑工具 Glyph Designer http://www.71squared.com/glyphdesigner  收费的 CCLabl ...

  9. Cocos2d入门--2--三角函数的应用

    其实,三角函数的知识点是初中的数学基础.但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效. 首先要注意的是 角度 和 弧度 的转换. 360度 = 2×PI弧度 180度 =   ...

随机推荐

  1. Linux企业级项目实践之网络爬虫(25)——管理源代码之SVN

    软件项目开发中,一般会用到源代码管理工具SVN.版本控制是管理数据变更的一种技术.对于程序员来说,它已经成为不可或缺的工具,因为他们经常修改软件代码,产生部分的变更,然后第二天再取消所有的变更.想象有 ...

  2. bzoj2154

    #include<cstdio> #include<cstdlib> #include<iostream> #include<fstream> #inc ...

  3. 怎样检查手机是否root成功

    怎样检查手机是否root成功 浏览:154361 | 更新:2011-01-20 13:10 | 标签:root 总有人以为,root后就可以删除自带程序了,这个想法也对也不对,想删除自带的软件,确实 ...

  4. IDF实验室解题学习笔记1

    1.图片里的英文 图片可以有很多种打开方式,破解该题,需将图片下载下来. 对于图片,我们可以使用图片编辑软件,进行各种调明暗,变色调等操作. 我们还可以使用2进制或者16进制的文件打开方式打开.该图使 ...

  5. 关于<ul><ol><li>的用法

    <ul>:无序列表 <ol>:有序列表 <li>:行. 想要去掉前面的序号和点可以在<ol>或<ul>style中用list-style: ...

  6. spark1.3的部署

    1.下载源码,根据自己的环境编译,我这里下载的是spark1.3版本 本人采用sbt编译, SPARK_HADOOP_VERSION=2.5.2 SPARK_YARN=ture sbt/sbt ass ...

  7. Class的生命周期

    之前的<JVM类载入机制-ClassLoader>和<初探JVM-ClassLoader源代码>,仅仅是讨论了Class的载入部分,如今来纵观一下整个Class的生命周期. C ...

  8. 主运行循环main run loop的一些理解

    应用主运行循环负责处理所有用户相关的事件.UIApplication对象在应用启动时安装主运行循环并且使用此循环去处理事件和处理基于视图的界面更新.正如名字所表明的,该主运行循环是在应用的主线程app ...

  9. 修改EF的默认约定模型的方式

    EF默认使用约定的模型,但是有时类不遵从约定,我们需要能够执行进一步的配置.对此有两种方法:数据注释和Fluent API 注释 class User { [Key] public int Key{ ...

  10. await与async的简单了解

    异步方法的返回类型可以为Task.Task.void.方法不能声明ref或out参数. 无法捕捉返回类型为void的异步方法引发的异常,如果返回Task或Task的异步方法中出现异常,则在任务等待时将 ...