CocosCreator -- 根据字体样式获取Label宽高

游戏中我们会用到很多的提示小窗口,同时根据不同文本配置和字体大小要求适配出最合适的框大小,在CocosCreator中怎么实现对应效果呢。
先看下面效果:在这里插入图片描述,更改文字内容,变成了这个样式:在这里插入图片描述

实现核心代码如下:


export class LabelUtil {
    static lable: cc.Label;

    /**
     * @param text 要显示文本内容
     * @param designSize label的设计宽高
     * @param fontSize 字体大小
     * @param lineHeight 行高
     */
    public static measureSize(text: string, designSize: cc.Size, fontSize: number, lineHeight: number): cc.Size {
        if(!LabelUtil.lable) {
            let node = new cc.Node();
            LabelUtil.lable = node.addComponent<cc.Label>(cc.Label);
        }
        LabelUtil.lable.fontSize = fontSize;
        LabelUtil.lable.lineHeight = lineHeight;
        LabelUtil.lable.string = text;

        // 计算宽
        LabelUtil.lable.overflow = cc.Label.Overflow.NONE;
        LabelUtil.lable.node.setContentSize(new cc.Size(0, lineHeight));
        LabelUtil.lable["_updateRenderData"](true);
        let textWidth = Math.min(LabelUtil.lable.node.width, designSize.width);
        textWidth = Math.floor(textWidth / fontSize) * fontSize;
        // 计算高
        LabelUtil.lable.overflow = cc.Label.Overflow.RESIZE_HEIGHT;
        LabelUtil.lable.node.setContentSize(new cc.Size(textWidth, 0));
        LabelUtil.lable["_updateRenderData"](true);
        let textHeight = LabelUtil.lable.node.height;
        return new cc.Size(textWidth, textHeight);
    }
}

调用方式:

let labelSize = new cc.Size(280, 0);
let size = LabelUtil.measureSize(content, labelSize, 24, 30);
————————————————
版权声明:本文为CSDN博主「honey199396」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/honey199396/article/details/98235800

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值