Label 下一帧才刷新大小 怎么办

如题:Label setString 之后 大小不变 下一帧才生效

1赞

这个很坑 所以我改用了富文本

兄弟为什么 log出来 三个不同的值 第一次因为 面板上是空字符串是宽度是0,我能理解 , 为什么延时不同的时间去取width 居然也不一样

@kenshin

感觉反馈,这里由于 label 中 _updateRenderData 处理开销过大,导致没办法设置 string 到时候去触发更新,size 只能在渲染到时候才可以获取到正确的 size,这个后续会加以优化和改进

目前用户可以自行在设置 label 所有属性后在执行一次 label._updateRenderData(true); 就能带当帧获取大小

6赞

谢谢大佬

那你们什么时候优化呢?这都过了3个多月了,每个开发者都至少会遇到这个问题啊

每个优化任务都有排期等,会根据优先级来进行,Label 性能优化也会在 2.1.x 或者 2.2 版本释出,目前实现已经提交了

_updateNodeSize

請問typeScript也是執行_updateRenderData(true)嗎?目前使用2.0.7並沒有這個function可以執行。
麻煩了。

2.0.7 应该不需要吧?如果项目不大,最好还是推荐升级到新版本

cocos能做到,怎么到creator就不行了?

2.0.10
版本,label 设置了 cache 为 bitmap。
文本修改后,有办法更新吗?

2.2.0版本,这个方法去掉了?

https://forum.cocos.com/t/bug-2-2-0-label/84985

label…_forceUpdateRenderData(true);

这个应该写进API啊,开发者决定是否调用。有时候这功能挺需要的

Label 高度获取的问题现在还有吗?
还有想请问下Label组件的换行规则。
谢谢!

将计算的方法放到update中,每帧都调用一下,就不需要_updateRenderData(true) 这个骚操作了

这个现在有优化吗,获取label的宽度还需要每次渲染完才可以知道宽度吗?