1.实例化一个node
父节:Node节点(带layout带CONTAINER属性);
子节点:Label(超过最大宽度自动刷新height)
2.设置子节点的lebel文字
3.父节点添加到场景上
这时候拿父节点的高度还是原本的高度不是改变完的高度 下一帧获得最新高度没问题 但是卡顿 会让用户很不舒服 有没有大佬更好的优化

有没有强制刷新 node节点属性的方法
绑定节点事件SIZE_CHANGED,看看在这里面能否获得
你这不是下一帧,是执行完成才获取的,你自己搞错了, 0.2s突然变化视觉能不卡
- 如上所说,你这不是1帧,大概是12帧
- 强制刷新label的方法:
label._forceUpdateRenderData();该方法是私有方法,ts会爆红,可以忽略,也可以自行处理
这个方法比较常用
一般因为label导致的长度变化,想及时获取到真实宽高,确实使用楼上的_forceUpdateRenderData函数,使用label"_forceUpdateRenderData"这样的写法就行了,不会提示报错。
下一帧可不是 0.2s,可以用scheduleOnce实现下一帧计算,不会有卡顿感觉
我已经强刷了 label 高度是改变了 但是父节点是node 还是得下一帧才能刷
试一下这个
我想要及时获取label 的父节点node的高度变化 node上挂了layout 随着子节点的变化而变化
layout也要调用updateLayout
之前做过一个战报的显示功能,和你这个功能很像,,当时打apk的时候,每加一条战报就会很卡,越多越来越卡,后来研究了,是lable控件里的overflow.resize_height,这里的问题,就是自动更新高度,可能导致滚动条里的layout自适应计算了多次,当时我是把overflow=none得到解决,你可以尝试把已经显示出来的lable的overflow=none
父节点透明。好了再显示UI。这样用户第一眼看到的就是变化好的UI
、
我这个和你这个不太一样我这个是因为 没有及时获得到最新的高度 所以Y没有到指定位置 延迟又会出现闪的情况
只能通过这种优化解决了
你的问题是让用户觉得卡顿了 那就高度没拿到之前把节点的透明度0 拿到高度后再透明度255 无脑暴力
目测只能通过奇淫技巧来弥补cocos设计的不足,除此之外,别无他法
不依赖父节点,直接计算子节点的高度和不就好了
