***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
好长时间没有更博了。。
有点懒啊。。
亲身经历提示广大猿们:换季了,防感冒!
言归正传,最近在做 三消的手游,
关卡设计是没指望了,只能做个限时的,所以,就研究了研究schedule,
这个以后再更新,
度娘搜索的时候,看到了进度条的progresstimer,
这个很好玩的样子,于是就做了下,感觉不错。
1.What?
API解释:
Progresstimer是Node的子类。 该类根据百分比来渲染显示内部的Sprite对象。 变化方向包括径向,水平或者垂直方向。
就是这样的情况:
2. How?
这个的实现就是通过progresstimer
与之前版本不同,
之前版本类型很多:
kCCProgresstimerTypeRadialccw,扇形逆时针形式 kCCProgresstimerTypeRadialCW,扇形顺时针形式 kCCProgresstimerTypeHorizontalbarLR,从左往右增张的形式 kCCProgresstimerTypeHorizontalbarRL,从右往左增张的形式 kCCProgresstimerTypeVerticalbarBT,从下往上增张的形式 kCCProgresstimerTypeVerticalbarTB,从上往下增张的形式
而现在Type只有两种:
①条型的设置
就是第三个图:
<span >// 添加图片auto sprite = Sprite::create("h7.png"); // 新建progresstimer对象,将图片载入进去Progresstimer *ct= Progresstimer::create(sprite);ct->setposition(Point(visibleSize.wIDth/2,visibleSize.height/2)); // 设置Tag,为后面更新准备ct->setTag(10);ct->setScale(0.2);this -> addChild(ct);// 设置初始的百分比,0~100 可以是0或者100ct->setPercentage(0);// 选择类型,是条型还是时针型ct->setType(kCCProgresstimerTypebar);//ct->setReverseProgress(true); // 下面两个条形的进阶ct->setMIDpoint(Point(0,0));ct->setbarChangeRate(Point(0,1));scheduleUpdate();</span>
然后,在.h 声明函数 voID update( float t )
在.cpp定义函数
<span >voID HelloWorld::update( float t ){ // 通过上面Tag设置,获取对象 CCProgresstimer *ct=(CCProgresstimer*)getChildByTag(10); // 获取当前进度 int num = ct->getPercentage(); // 设置进度速度(此处为每帧+1) ct->setPercentage( ++num ); // 设置了循环播放 if( num >= 100 ) ct -> setPercentage(0);}</span>
此处,我是通过帧数来控制的速度,
当然也可以通过 自己调用的update来设置速度。
条形的可以从上到下,从下向上,或者从中间向两边
这个的控制,就是通过上面代码中,进阶的部分:
<span >ct->setMIDpoint(Point(0,1));</span>
setMIDpoint 是定义从哪开始
这个和锚点的设置一样,0,0左下角,1,1是右上角
setbarChangeRate 是 定义 方向
1,0是自下而上
0,1是自左向右
②时针型的设置
<span > // 添加图片 auto sprite = Sprite::create("h7.png"); // 新建progresstimer对象,将图片载入进去 Progresstimer *ct= Progresstimer::create(sprite); ct->setposition(Point(visibleSize.wIDth/2,visibleSize.height/2)); // 设置Tag,为后面更新准备 ct->setTag(10); ct->setScale(0.2); this -> addChild(ct); // 设置初始的百分比,0~100 可以是0或者100 ct->setPercentage(0); // 选择类型,是条型还是时针型 ct->setType(kCCProgresstimerTypeRadial); ct->setReverseProgress(false); // 下面两个条形的进阶// ct->setMIDpoint(Point(0,0));// ct->setbarChangeRate(Point(0,1)); scheduleUpdate();</span>
update函数还是那样,
默认是顺时针,
setReverseProgress
——false 顺时针
——true 逆时针
这样第二个的图片就实现了。
③ 第一个图片那种如何实现呢?
其实,So easy
只需要弄一张暗一点的图片,在底下衬着:
<span >auto sprite2 = Sprite::create("h7_02.png");sprite2->setScale(0.2);sprite2->setposition(Point(visibleSize.wIDth/2,visibleSize.height/2));this -> addChild(sprite2);</span>
就是这样~
进度条你学会了吗?
同为新手,如有错误,敬请指出,共同进步 O(∩_∩)O~
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
总结以上是内存溢出为你收集整理的Cocos2d-x 3.2 之 进度条 progressTimer全部内容,希望文章能够帮你解决Cocos2d-x 3.2 之 进度条 progressTimer所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)