进度条--------CCProgressTimer:
创建了二个进度条,一个水平进度条,一个圆形进度条,特别是第二个圆形进度条,可以用来表示DOTA技能
1.效果图片:
2.源码:
class HelloWorld : public cocos2d::CCLayer
{
protected:
cocos2d::CCProgressTimer* progress1;
float cu1;
cocos2d::CCProgressTimer* progress2;
float cu2;
cocos2d::CCLabelTTF* numsTTF;
int opacity;
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommand to return the exactly class pointer
static cocos2d::CCScene* scene();
void update(float dt);
// implement the "static node()" method manually
CREATE_FUNC(HelloWorld);
};
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
CCSprite *progressbgSprite=CCSprite::create("progress_bg.png");
progressbgSprite->setAnchorPoint(ccp(0,0));
progressbgSprite->setPosition(ccp(100, 250));
this->addChild(progressbgSprite, 1);
CCSprite *progressSprite=CCSprite::create("progress_1.png");
progress1=CCProgressTimer::create(progressSprite);
progress1->setType(kCCProgressTimerTypeBar);
progress1->setAnchorPoint(ccp(0,0));
progress1->setPosition(ccp(100, 250));
//进度动画运动方向,可以多试几个值,看看效果
progress1->setMidpoint(ccp(0, 0));
//进度条宽高变化
progress1->setBarChangeRate(ccp(1, 0));
progress1->setPercentage(0);
this->addChild(progress1, 1);
numsTTF=CCLabelTTF::create("0", "Thonburi", 18);
numsTTF->setPosition(ccp(250, 270));
this->addChild(numsTTF, 1);
CCSprite *progress2Sprite=CCSprite::create("HelloWorld.png");
progress2=CCProgressTimer::create(progress2Sprite);
//类型为圆形
progress2->setType(kCCProgressTimerTypeRadial);
progress2->setPosition(ccp(250, 150));
progress1->setPercentage(0);
progress2->setScale(0.5);
//0 透明 255完全不透明
opacity = 255;
progress2->setOpacity(opacity);
this->addChild(progress2, 0);
this->scheduleUpdate();
bRet = true;
} while (0);
return bRet;
}
void HelloWorld::update(float dt)
{
cu1=progress1->getPercentage();
if(cu1 >= 100)
{
cu1 = 0;
}
cu1=cu1+0.1f;
progress1->setPercentage(cu1);
CCString *str = CCString::createWithFormat("%.2f%%",cu1);
numsTTF->setString(str->getCString());
cu2=progress2->getPercentage();
if(cu2 >= 100)
{
cu2 = 0;
}
cu2=cu2+0.5f;
progress2->setPercentage(cu2);
if(opacity == 0 )
{
opacity = 256;
}
opacity = opacity - 1;
progress2->setOpacity(opacity);
}
3.参考
1.http://blog.youkuaiyun.com/kuloveyouwei/article/details/9062687