1.CCProgressTo进度动作,条形进度条,扇形进度条



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));

xy均为[0,1]的数值表示进度起始点。比如ccp(0,0)左下角,ccp(1,1)右上角。

setBarChangeRate(ccp(x,y));

xy均为[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));

    //当设置成11的时候上下,左右都能够填满。

    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;

}

运行结果:

1.CCProgressTo进度动作,条形进度条,扇形进度条

 

上一篇:Android之利用Handler实现ProgressBar进度条


下一篇:OpenSSL 曝出重大缺陷 黑客可多次窃取数据