#Cocos Creator# 获得Label动态尺寸的解决方法
问题环境
有一个带背景的文本标签,文本内容是可变的,希望背景图的宽度也跟着文本一起变化。
label.string = text; // 设置文本
label_bg.width = label.node.width; // 修改背景尺寸 BUG: 这里只能获得标签的初始width
测试发现,标签节点的宽度并没有在设置完文本以后立即改变。
原因
原因是因为,在Cocos Creator中,label的尺寸是在渲染时计算出来的,在设置string时并没有立即计算。
解决方法
参考Cocos 论坛上的方法,在设置完string以后,手动调用一次label._updateRenderData(true)
新的js代码如下:
label.string = text; // 设置文本
label._updateRenderData(true); // 这里调用一次手动渲染
label_bg.width = label.node.width; // 修改背景尺寸
参考
重要更新
Cocos Creator 2.2.0 已经移除了_updateRenderData方法。
经测试,可用_forceUpdateRenderData方法替代。