在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. 在CentOS中编译安装VIM 7.3

    默认安装的 Vim 不带有多字符支持,所以不支持中文.无论是将 CentOS 本来的语系改为中文还是将 Vim 的语系设置改为中文,都不能正常显示中文.为了在 Vim 中能够正常处理中文,我们需要在编 ...

  2. 如何在android上去控制开发进度

    这次android的壁纸软件1.0版本终于可以上线了,软件的功能基本上实现了,但是用户体验不太好.在整个开发阶段和测试阶段,出现了很多预料之外的事情,比如size是1M多的json文件解析.高清图片导 ...

  3. windows 运行打开服务命令

    转载自:http://www.2cto.com/os/201209/157464.html windows运行打开服务命令 Java代码  1. gpedit.msc-----组策略  2. sndr ...

  4. mysql学习之五:sql语句学习3

    好吧,大家认为这样的字体还是比較好看,全部我们就换这样的字体了. INSERT INTO 语句用于向表格中插入新的行. 语法 INSERT INTO 表名称 VALUES (值1, 值2,....) ...

  5. 《31天成为IT服务达人》--机遇篇(二)

    1       第二章 机遇就是选择大于努力 年假设你一咬牙(或者在晚点)买了房,十年的巨幅增值,比你如今干哪行都赚得快,可是往往有选择就有痛苦,这样的痛苦来至于对未知的恐惧和现实须要一定的付出.作为 ...

  6. 线程、线程句柄、线程ID

     什么是句柄:句柄是一种指向指针的指针.我们知道,所谓指针是一种内存地址.应用程序启动后,组成这个程序的各对象是住留在内存的.如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址 ...

  7. 如何解决DE0-Nano的EPCS16 无法下载的问题:NO EPCS LAYOUT DATA --- LOOKING FOR SECTION [EPCS-XXXXXX]

    在用NIOS的flashprogram对EPCSx进行烧录程序时,出现了No EPCS layout data --- looking for section [EPCS-XXXXXX]的错误,在网上 ...

  8. 无法连接到ASP.NET Development Server 解决办法

    右击项目名称 ->  属性 -> Web -> 选特定端口 -> 输入一个端口值.

  9. WebApi2官网学习记录---Content Negotiation

    Content Negotiation的意思是:当有多种Content-Type可供选择时,选择最合适的一种进行序列化并返回给client. 主要依据请求中的Accept.Accept-Charset ...

  10. (转)Web.config配置文件详解(新手必看)

    花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...