ios - 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 中,哪个是使加载进度的最佳方法?
解决方案
我检查了 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 元素一样将为您处理缩放等事情。
不过,就性能而言,我认为加载栏的区别并不大,所以如果你只想要一个非常简单的,你的第二个选择,虽然也可以使用不太灵活的选项。
推荐阅读
- android - 很棒的教程,但无法复制代码
- mongodb - Mongocxx 连接池(VS Release 版本)连接远程服务器时出现问题
- javascript - 打字稿-对象的括号索引不会产生错误
- javascript - 如何为避开多个指定区域的圆生成一组坐标?
- javascript - Webpack 导入的变量未定义,除非我将其分配给另一个变量
- html - 如何在 WordPress 帖子上编写预先编写的 HTML 代码
- javascript - 调整围绕其原点旋转的 SVG 的大小
- html - 无法缩小背景照片大小
- c# - 通过网络实例化游戏对象
- arcore - 将 arFragment (sceneForm) 与现有 Fragment APP 集成的最佳实践