创建
auto left = ProgressTimer::create(Sprite::create(s_pathBlock));
设置类型
left->setType(ProgressTimer::Type::RADIAL);
有两种类型,一种是RADIAL,就是圆周的渐次显示。可以实现游戏中的一些技能CD效果。
还有一种就是BAR,一般用来实现血条
设置中心点
setMidPoint(Vec(0,0))//不设置的话默认是(0.5,0.5)
对于RADIAL类型,默认是顺时针渐次显示。如果需要逆时针,则可以用
right->setReverseProgress(true);
对于BAR类型,是从MidPoint向两边渐次显示的,所以,要实现血条,因为血条是随着血量的增加向右增加的,就把midpoint设置为(0,0),但是同时也需要设置
left->setBarChangeRate(Vec2(1, 0));//0代表,在y轴上是100%的状态
然后就可以通过setPercentage方法来改变显示的百分比了
当然也可以让PropgressTimer runAction(ProgressTo(2,100))来实现变化
总结
对于RADIAL比较好理解。
对于BAR类型:
midPoint就跟Node里面的锚点差不多,setBarChangeRate(Vec2(1,0))里面的vec2,数值则是刚好相反的,比如0,代表已经100%显示了,1代表没有显示任何东西。
举个例子:
有一个100*100的sprite,设置midPoint为(0.5,0.5),setBarChangeRate(0.3,0.7)
那么初始的情况就是在x轴上,0-15还没显示,85-100还没显示,在y轴上,0-35还没显示,65-100还没显示。所以已经显示的一个矩形就是70*30的