1.效果图
2.代码参考
//create the progresser
const auto progresserBgSprite = Sprite::create("0.png");
progresserBgSprite->setRotation(90);
progresserBgSprite->setPosition(Vec2(size.width / 2, progresserBgSprite->getContentSize().width / 2));
this->addChild(progresserBgSprite);
progresser = ProgressTimer::create(Sprite::create("3.png"));
progresser->setType(ProgressTimerType::BAR);
progresser->setMidpoint(Vec2(0.5, 0));
progresser->setRotation(90);
progresser->setPosition(progresserBgSprite->getPosition());
progresser->setBarChangeRate(Vec2(0, 1));
progresser->setPercentage(percentage);
this->addChild(progresser);
//init the percentageLabel
std::string info = std::to_string(percentage);
info.append("%");
percentageLabel = Label::createWithTTF(info, "fonts/arial.ttf", 20);
percentageLabel->setPosition(progresser->getPosition());
this->addChild(percentageLabel);
3.说明
我的原图为竖直的,所以做了旋转。一个进度条需要三个Node,ProgressTimer的背景图Sprite,ProgressTimer和一个显示进度的Label,三个Node的位置均设置为背景图位置。
3个关键函数:
setType()设置类型,进度条一般设置为BAR、
setMidPoint()设置进度条的起始位置,具体设为多少可以查看方法源码注释。
setChangRate()设置进度条在增长时保持高度不变还是宽度不变,即X和Y上比率。
最后需要通过调度器Schedule根据资源已加载的数量通过setPercentage()改变进度。