1 Bar形进度
CCSprite * proBack = CCSprite::create("barback.png"); proBack->setPosition(ccp(winSize.width/2 - 100,winSize.height/2)); addChild(proBack); CCProgressTimer * left = CCProgressTimer::create(CCSprite::create("bar.png")); left->setPosition(ccp(winSize.width / 2 - 100, winSize.height / 2)); addChild(left); left->setType(kCCProgressTimerTypeBar); left->setMidpoint(ccp(1,0)); left->setBarChangeRate(ccp(1,1)); CCProgressTo * to = CCProgressTo::create(2, 120.0f); left->runAction(CCRepeatForever::create(to)); |
setMidPoint(ccp(x,y));
setMidpoint(ccp(1,0));
x和y均为[0,1]的数值表示进度起始点。比如ccp(0,0)左下角,ccp(1,1)右上角。
setBarChangeRate(ccp(x,y));
x和y均为[0,1]的数值表示,表示水平方向和竖直方向的进度。比如ccp(0,1)表示只有y轴方向有进度。
2 Radial
CCSprite * proBack2 = CCSprite::create("radialback.png"); proBack2->setPosition(ccp(winSize.width / 2 + 100, winSize.height /2)); addChild(proBack2); CCProgressTimer * right = CCProgressTimer::create(CCSprite::create(“radial.png”)); right->setPosition(ccp(winSize.width/2 + 100,winSize.height / 2)); addChild(right); right->setType(kCCProgressTimerTypeRadial); right->setMidpoint(ccp(0.5,0.5)); CCProgressTo * to2 = CCProgressTo::create(2,100.0f); right->runAction(to2); |
3 案例
T17CCProgressTo.h |
#ifndef __T17CCProgressTo_H__ #define __T17CCProgressTo_H__ #include "cocos2d.h" #include "TBack.h"
class T17CCProgressTo :public TBack { public: static CCScene * scene(); CREATE_FUNC(T17CCProgressTo); bool init(); };
#endif |
T17CCProgressTo.cpp |
#include "T17CCProgressTo.h" #include "AppMacros.h" CCScene * T17CCProgressTo::scene() { CCScene * scene = CCScene::create(); T17CCProgressTo * layer = T17CCProgressTo::create(); scene->addChild(layer); return scene; }
bool T17CCProgressTo::init() { TBack::init();
//创建一个CCSprite CCSprite * proBack = CCSprite::create("barback.png"); //设置精灵所在的位置 proBack->setPosition(ccp(winSize.width / 2 - 100, winSize.height / 2)); addChild(proBack);
//创建一个CCProgressTimer作为进度条 CCProgressTimer * left = CCProgressTimer::create(CCSprite::create("bar.png")); //设置进度条所在的位置上。 left->setPosition(ccp(winSize.width / 2 - 100, winSize.height / 2)); //cpp中的 //第一个参数表示的是控制进度条填满的方向, //0表示从左往右运行, //1表示进度条往左边运行 //第二个参数表示上下填满的顺序 //0表示从下往上运行。 //1表示从上往下运行。 //注意:者两个参数的范围都是从0~1 //当中间值设置成为0.5时,进度的显示顺序是从中间开始的 left->setMidpoint(ccp(0, 0.5)); //当设置成1,1的时候上下,左右都能够填满。 left->setBarChangeRate(ccp(0, 1)); //设置类型 left->setType(kCCProgressTimerTypeBar); addChild(left); //动作,表示两秒钟内填满100.0f的值 CCProgressTo * to = CCProgressTo::create(2, 100.0f); //通过下面的方式让这个进度条循环的填充值 left->runAction(CCRepeatForever::create(to));
//创建一个radial的进度条。背景色 CCSprite * proBack2 = CCSprite::create("radialback.png"); //设置radial的显示位置 proBack2->setPosition(ccp(winSize.width / 2 + 100, winSize.height / 2)); addChild(proBack2);
CCProgressTimer * right = CCProgressTimer::create(CCSprite::create("radial.png")); //设置它的显示位置 right->setPosition(ccp(winSize.width / 2 + 100, winSize.height / 2)); //表示它的中心点位置,圆心的位置在圆的正中心 right->setMidpoint(ccp(0.5, 0.5)); right->setType(kCCProgressTimerTypeRadial); addChild(right); //两秒钟内填充100% CCProgressTo * to2 = CCProgressTo::create(2, 100.0f);
right->runAction(CCRepeatForever::create(to2));
return true; } |
运行结果: |