cocos2d-x学习(5)-------CCProgressTimer(进度条)

本文介绍如何使用Cocos2d-x创建水平及圆形进度条,并通过代码示例展示了进度条的设置方法,包括进度方向、百分比更新等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进度条--------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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hfreeman2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值