首页 > 解决方案 > Cocos2d-x 3.17:制作加载/进度条的最佳方式

问题描述

// 类型 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");

// 类型 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 中,哪个是使加载进度的最佳方法?

标签: iosxcodecocos2d-x

解决方案


我检查了 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 元素一样将为您处理缩放等事情。

不过,就性能而言,我认为加载栏的区别并不大,所以如果你只想要一个非常简单的,你的第二个选择,虽然也可以使用不太灵活的选项。


推荐阅读