接上篇,这篇主要介绍Progress的水平模式
代码如下:
auto vSize = Director::getInstance()->getVisibleSize();
auto bar = Sprite::create("bar.png");
auto barPT = ProgressTimer::create(bar);
barPT->setPosition(vSize / 2);
barPT->setType(ProgressTimerType::BAR);
barPT->setMidpoint(Vec2(0, 0));
barPT->setBarChangeRate(Vec2(1, 0));
this->addChild(barPT);
auto action = ProgressFromTo::create(2, 0, 100);
barPT->runAction(RepeatForever::create(action));
效果图:(不会ps,资源太渣还请见谅...)
乍一看起来代码和半径模式的差不多,但是一定要注意一句话
barPT->setBarChangeRate(Vec2(1, 0));//表示x,y值的变化幅度,默认0,0
因为是从左到右,所以x每帧都要变化,而y不变化。
如果不写这句话,效果如下:
注意!虽然在构造方法中changeRate默认值是(0,0),但运行起来的时候会变成(1,1),所以x,y轴才会一起变化!如果是(0, 0)的话是不会动的!
可以输出一下changeRate的值看一下:
//barPT->setBarChangeRate(Vec2(0, 0));
Vec2 rate = barPT->getBarChangeRate();
log("%f, %f", rate.x, rate.y);
this->addChild(barPT);
看一下ProgressTimer的源码:
所以在创建完了以后要根据需求设置changeRate的值。