Skip to content

cocos creator中Label的使用技巧

强制刷新

在项目中很多时候我们希望节点的尺寸根据label变化,在cocos creator中默认设置宽度是自动变化,通过设置overflowcc.Label.Overflow.RESIZE_HEIGHT可以变化高度,但是这些都不是实时的,都需要在下一次update时才会完成,就会看到文字突然从某个位置移动了,感觉很奇怪,还有的时候依次并排的label需要依靠前边的lable的宽度来计算位置,所以有了强制刷新的需求.

ts
    let node1 = new cc.Node();
    let label = node1.addComponent(cc.Label);
    label.string = "123456";
    console.log("原始宽度", node1.width);
    label._forceUpdateRenderData();
    console.log("强制刷新后宽度", node1.width);

    //同理富文本cc.RichText也有借口
    let node2 = new cc.Node();
    let richText = node2.addComponent(cc.RichText);
    richText.string = "123456";
    console.log("原始宽度", node2.width);
    richText._updateRichText();
    console.log("强制刷新后宽度", node2.width);

以上2个方法如果你在vscode中看是会报错,因为creator.d.ts中并没有导出,如果有洁癖可以手动在项目creator.d.ts中添加一下这2个方法的申明.