在游戏中进度条分两类,一种是圆形的CD类(Radial)、一种是方形的血条类(Bar)。
最近项目用到了这个,碰了点小问题,相信也有很多同学碰到了。
其实自己慢慢尝试就可以发现如何使用,但蛋疼的摆渡,搜到的尽是无用的资料。
-------------------------------- 美丽的分割线 ---------------------------------
有情提示:
如果你不知道如何将一个CCProgressTimer加入到布景层(CCLayer)中,请放弃治疗,赶紧转行
kCCProgressTimerTypeBar:
CCSprite *pSp = CCSprite::create("F-fail01.png");
pBar = CCProgressTimer::create(pSp);
pBar->setType(kCCProgressTimerTypeBar);
pBar->setPosition(visibleSize.width/2, visibleSize.height/2);
pBar->setPercentage(100);
pBar->setMidpoint(ccp(0,1));
pBar->setBarChangeRate(ccp(1,0));
this->addChild(pBar);
setType() : 设置进度条的类型Radial或Bar。
setPercentage() :设置最初的显示比例(0~100)。
setMidpoint() :(0,1) (0,y)等等,进度条的前进方向是从左到右。 (1,0) (x,0) (x,y) 等等,进度条的前进方向是从右到左。
setBarChangeRate() : (1,0) 进度条Y轴方向的大小不改变,(0,1) 进度条X轴方向的大小不改变,(1,1)进度条X,Y轴根据比例同时改变,(0,0)形状不改变。
-------------------------------- 美丽的分割线 ---------------------------------
kCCProgressTimerTypeBar:
CCSprite *pSp = CCSprite::create("F-fail01.png");
pBar = CCProgressTimer::create(pSp);
pBar->setType(kCCProgressTimerTypeRadial);
pBar->setPosition(visibleSize.width/2, visibleSize.height/2);
pBar->setPercentage(100);
this->addChild(pBar);
射线性的CD类进度条

但默认的是顺时针方向,如果要使用逆时针方向就设置如下:
pBar->m_bReverseDirection = true;
完。
-------------------------------- 美丽的分割线 ---------------------------------
还是来点福利吧。
游戏中的血条很好制作,首先是一个血条的CCNode,CCNode下面有两个子结点,一个是背景框,一个是CCProgressTimer。
在update()函数中实时监控条件,然后设置CCProgressTimer的比例。(setPercentage())
游戏中的CD也很好制作,首先是一个血条的CCNode,CCNode下面有三个子结点,一个是背景框,一个是CD图标,一个是遮罩CCProgressTimer。
除了在update()中直接设置比例,也可以使用 CCProgressTo动作,这个也比较方便,特别对于不需要实时计算的地方,可以直接设置一个比例,然后播放动画。
剩下的,你懂的~