// TYPE 1
auto loadingbar = ui::LoadingBar::create("loadingbar.png");
loadingbar->setPosition(winSize/2);
loadingbar->setPercent(0);
this->addChild(loadingbar);
this->schedule([=](float delta){
float percent = loadingbar->getPercent();
percent++;
loadingbar->setPercent(percent);
if (percent>=100.0f) {
this->unschedule("updateLoadingBar");
}
}, 0.1f, "updateLoadingBar");
// TYPE 2
auto timerBG = Sprite::create("loadingbar.png");
auto loadingBar = ProgressTimer::create(timerBG);
loadingBar->setPosition(winSize/2);
loadingBar->setType( ProgressTimerType::BAR );
loadingBar->setAnchorPoint( Vec2( 0.0, 0.0 ) );
loadingBar->setBarChangeRate( Vec2( 1,0 ) );
loadingBar->setMidpoint( Vec2( 0.0, 0.0 ) );
loadingBar->setPercentage( 34 );
this->addChild( loadingBar, 2);
auto prog = ProgressFromTo::create(2.0, 20, 100);
loadingBar->runAction(prog);
在上述2中,这是实现加载进度的最佳方法?
答案 0 :(得分:1)
我检查了UI LoadingBar类的原始来源,它具有一些有趣的方法,您可以直接使用它们:
您可以使用不同的纹理,文本创建条形并设置百分比:
LoadingBar* LoadingBar::create(const std::string &textureName, float percentage)
您可以更改栏杆的方向,如果您决定在实现后更改加载场景的设计,这将很有用:
void LoadingBar::setDirection(cocos2d::ui::LoadingBar::Direction direction)
您可以动态替换纹理,想象一下您想像某些游戏一样随着加载进度更改图像:
void LoadingBar::loadTexture(SpriteFrame* spriteframe)
此外,它继承自UI Widget
,就像所有UI元素一样,它也会为您处理诸如缩放之类的事情。
但是,就性能而言,我认为它对加载栏没有太大影响,因此,如果您只想要一个非常简单的选项,则可以选择第二个选项,尽管也可以使用不太灵活的选项。