cocos2d-x 进度条
好了,我们来看看进度条如何来实现,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());
}
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为我们提供的一个很实用的控件,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" class="keylink">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);
然后我们创建一个更新函数( 大家应该还记得吧),用来断的操作进度条和标签,然后再创建一个函数,用来操作进度完成之后的行为:
实现函数:
现在,一个装载界面就完成了,我们来看看效果:
大家还记得红警这个游戏吗? 相信不少朋友是玩过的,修建建筑物等待的时候也可以使用进度条来做,我们来看看如何使用CCProgressTo:
CCProgressTo::create( 消耗时间,显示图片百分比);
看看用法,我们屏蔽掉刚刚的更新函数:
这里我们创建了一个动作序列,然后在动作执行完了之后去执行我们创建的一个函数任务,CCCallFunc创建一个相当于动作的函数,我们会在后面讲到,那个标签我就没有去操作它,除了载入完成,它是不会变的,不要在意这些细节( 旁白: 没见过你这么懒的) 我们来看看效果:
没有操作标签哦,亲们,这不是bug哈
效果是不是出来了,当然,进度条这个控件,我们还可以用来做血条,设置为扇形的我们还可以用来做技能冷却效果之类的,反正大家自己多摸索吧,
上文来自:http://blog.csdn.net/zhanghefu/article/details/38166785 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- (转)Ajax实现文件上传___怎么设置multipart/form-data
- jsonp原理详解——终于搞清楚jsonp是啥了
- 【推荐】 sqlite 管理工具
- C#通过FtpWebResponse 编写GUI 简易 FTP客户端
- oracle分层查询中的start with和connect by 树结构查询
- c# – .NET或C中的Erlang风格并发
- Binary XML file line #6: Error inflating class xxx
- 前端每周清单:Vue 2.2发布,React在GitHub突破6万star
- Oracle中的重音和不区分大小写的COLLATE等效项
- Oracle数据库用户查询常用命令