代码之家  ›  专栏  ›  技术社区  ›  Guru

Cocos2d-x 3.17:制作加载/进度条的最佳方法

  •  0
  • Guru  · 技术社区  · 6 年前

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

    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);
    

    以上两种方法中,哪一种是取得装载进度的最佳方法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Isma    6 年前

    您可以使用不同的纹理、文本创建条形图并设置百分比:

    LoadingBar* LoadingBar::create(const std::string &textureName, float percentage)
    

    您可以更改栏的方向,如果您决定在加载场景实现后更改其设计,这将非常有用:

    void LoadingBar::setDirection(cocos2d::ui::LoadingBar::Direction direction)
    

    您可以动态替换纹理,假设您希望在加载过程中更改图像,就像某些游戏一样:

    void LoadingBar::loadTexture(SpriteFrame* spriteframe)
    

    Widget 就像所有的UI元素一样,它可以为您处理诸如缩放之类的事情。