cocos2d-x 进度条

cocos2d-x 进度条,第1张

概述好了,我们来看看进度条如何来实现,cocos2dx里已经有现成的这个类,叫CCProgressTimer。好了,废话少说,我们直接上代码,看如何来这个类。 //创建一个进度条精灵,这个是2.0以后api变了 CCSprite *progressbgSprite=CCSprite::create("time_slot-hd.png"); progressbgSprite->set

好了,我们来看看进度条如何来实现,cocos2dx里已经有现成的这个类,叫CCProgresstimer。好了,废话少说,我们直接上代码,看如何来这个类。

 //创建一个进度条精灵,这个是2.0以后API变了    CCSprite *progressbgSprite=CCSprite::create("time_slot-hd.png");    progressbgSprite->setposition(ccp(300,300));    this->addChild(progressbgSprite,1);            CCSprite *progresssprite=CCSprite::create("time_bars-hd.png");    progress1=CCProgresstimer::create(progresssprite);        progress1->setType(kCCProgresstimerTypebar);        progress1->setposition(ccp(300,300));        //进度动画运动方向,可以多试几个值,看看效果    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(300,300));            this->addChild(numsTTF,1);            this->scheduleUpdate();


voID HelloWorld::update(float t){ float cu=progress1->getPercentage(); cu=cu+0.1f; progress1->setPercentage(cu); CCString *str = CCString::createWithFormat("%.2f%%",cu); numsTTF->setString(str->getCString()); }


创建一个CCProgresstimer类,并且在上面显示一个文字变化,并调用系统的方法来刷新界面,OK,看截图




0K。。我们来改变下,设置progress1->setPercentage(100);然后刷新方法里cu=cu-0.1f;


OK,我们换个进度条类型看看,

CCSprite *progress2Sprite=CCSprite::create("Icon-72.png"); progress2=CCProgresstimer::create(progress2Sprite); //类型为圆形 progress2->setType(kCCProgresstimerTypeRadial); progress2->setposition(ccp(300,100)); this->addChild(progress2,1);
我们看下效果:(下面的小图就是)

上文来自:http://blog.csdn.net/kuloveyouwei/article/details/9062687


cocos2dX UI控件之CCProgress

今天我们来学习cocos2dX为我们提供的一个很实用的控件,CCProgress进度条,我们先来看看有哪些常用的函数


用法:

CCProgresstimer::create( 精灵对象);

setType( 进度条样式); //设置进度条样式,提供两种可选参数,kCCProgresstimerTypebar( 条形计时器)和kCCProgresstimerTypeRadial( 扇形计时器)

setPercentage( float); //设置当前值,在0-100之间,一般情况下,我们默认设置为0

getPercentage(); //获取当前值

setReverseProgress( bool); //是否打开反向

setbarChangeRate( CCPoint对象); //定义起始时的样式,也有人说是设置锚点,一般我习惯设置为ccp( 1,0),然后setMIDpoint()设置为ccp( 0,1),这样刚好是普通的进度条样式

setMIDpoint( CCPoint对象); //计时器显示方向,默认的是0.5,0.5,从中间开始

老规矩,资源准备好:


首先,我们来创建一个进度条和一个标签:

<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" >vcD4KPHByZSBjbGFzcz0="brush:java;">//创建字体标签 cclabelTTF* ttf = cclabelTTF::create( "loading...%0","Arial",24); ttf->setposition( ccp( visibleSize.wIDth / 2,visibleSize.height / 2 + 140)); addChild( ttf,101); //创建进度条背景,可以不用 CCSprite* parBg = CCSprite::create( "bg.png"); parBg->setposition( ccp( visibleSize.wIDth / 2,visibleSize.height / 2)); addChild( parBg); //创建进度条 CCProgresstimer* myTimer = CCProgresstimer::create( CCSprite::create( "t.png")); myTimer->setposition( ccp( visibleSize.wIDth / 2,visibleSize.height / 2)); myTimer->setType(kCCProgresstimerTypebar); //设置为条形进度条 myTimer->setbarChangeRate( ccp( 1,0)); myTimer->setMIDpoint( ccp( 0,1)); myTimer->setPercentage(0); //设置当前值 addChild( myTimer,102);


然后我们创建一个更新函数( 大家应该还记得吧),用来断的 *** 作进度条和标签,然后再创建一个函数,用来 *** 作进度完成之后的行为:

?
1 2 virtual voID update( float delta); voID loadOK();


实现函数:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @H_403_201@ 20 21 22 23 24 25 26 voID HelloWorld::update( float delta) { CCProgresstimer* myTimer = (CCProgresstimer*) this ->getChildByTag( 102 ); float cu = myTimer->getPercentage(); //获取到当前进度条的值 if ( cu >= 100 ) { //如果进度条大于100,调用载入完成函数,停止更新函数 loadOK(); unscheduleUpdate(); } else { //否则就给当前进度加0.1 cu += 0 .1f; myTimer->setPercentage( cu); CCString* str = CCString::createWithFormat( "loading...%0.2f" ,cu); cclabelTTF* ttf = (cclabelTTF*) this ->getChildByTag( 101 ); ttf->setString( str->getCString()); } @H_403_201@ } voID HelloWorld::loadOK() { cclabelTTF* ttf = (cclabelTTF*) this ->getChildByTag( 101 ); ttf->setString( "load OK!!!!" ); }




现在,一个装载界面就完成了,我们来看看效果:




大家还记得红警这个游戏吗? 相信不少朋友是玩过的,修建建筑物等待的时候也可以使用进度条来做,我们来看看如何使用CCProgressto:



CCProgressto::create( 消耗时间,显示图片百分比);


看看用法,我们屏蔽掉刚刚的更新函数:

?
1 2 3 CCProgressto* to = CCProgressto::create( 2 .0f, 100 .0f); CCCallFunc* func = CCCallFunc::create( this ,callfunc_selector( HelloWorld::loadOK)); myTimer->runAction( CCSequence::create( to,func,NulL));



这里我们创建了一个动作序列,然后在动作执行完了之后去执行我们创建的一个函数任务,CCCallFunc创建一个相当于动作的函数,我们会在后面讲到,那个标签我就没有去 *** 作它,除了载入完成,它是不会变的,不要在意这些细节( 旁白: 没见过你这么懒的)

我们来看看效果:


没有 *** 作标签哦,亲们,这不是BUG哈



效果是不是出来了,当然,进度条这个控件,我们还可以用来做血条,设置为扇形的我们还可以用来做技能冷却效果之类的,反正大家自己多摸索吧,


上文来自:http://blog.csdn.net/zhanghefu/article/details/38166785

总结

以上是内存溢出为你收集整理的cocos2d-x 进度条全部内容,希望文章能够帮你解决cocos2d-x 进度条所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1066118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存