目前公司用2.4,业余时间体验3.8.8,记录一下。
1.写一个toast组件时遇到的坑,toastitem有一个label和一个sprite背景,监听label的SIZE_CHANGED事件,在回调里设置背景的大小,拿到的contentSize是正确的,但显示有误。需要在设置label string后立刻调用一次updateRenderData(true)
目前公司用2.4,业余时间体验3.8.8,记录一下。
1.写一个toast组件时遇到的坑,toastitem有一个label和一个sprite背景,监听label的SIZE_CHANGED事件,在回调里设置背景的大小,拿到的contentSize是正确的,但显示有误。需要在设置label string后立刻调用一次updateRenderData(true)
除了Label还有Layout也是这样的,应该是引擎基于性能考虑才这样设计的,因为一帧内有可能多次修改内容,如果每次都计算有些浪费,所以是在一帧的结束统一更新conteSize的。但是也提供了api,就像你提到的那个,可以立刻更新contentSize
不是延迟刷新的问题,是sizechanged事件收到了,size获取的也是正确值,设置到sprite上,sprite的size也变了,但是sprite显示却是错误的。按理说延迟刷新,应该会在刷新完成之后,才会触发sizechanged
谢谢,后面我看一下
如果你是这一帧改文本前已经改过背景的渲染相关的属性,那就是我发的这个问题
我只是在sprite上挂了一个脚本,脚本里监听label的sizechanged,在回调里获取label的宽度,给sprite赋值。改文本前没动过sprite的属性。