cocos label html文本,Cocos Creator Label 设置文本后立即获取高度(示例代码)

引擎版本: 2.3.3

引擎源码版本: 2.4.2

引擎源码hash值: fa81ab2cbac8190163656b2f1de0f8119f961909

我用看的是master分支.

在给文本赋值之后不会立即刷新文本内容,而是在下一帧进行渲染, 导致你不能立即获取文本的高度,

解决问题的思路,

1.首先查看官方提供的api

2.没有的话可以去论坛搜索一下相关问题

3.其次就是看一下引擎的源码,

这里有两种解决方案

1.直接调用 label 里面的私有方法 进行强行跟新渲染

2.延时 0.1秒 后在进行获取文本的高度 和 后续逻辑处理

方法一

论坛上人说的方法在新版本中已经使用不了了.

看了一下引擎的源码

截图比较的麻烦我就不截图了

源码路径: ~/core/components/CCLabel.js

onEnable () {

this._super();

// Keep track of Node size

this.node.on(cc.Node.EventType.SIZE_CHANGED, this._nodeSizeChanged, this);

this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this.setVertsDirty, this);

this._forceUpdateRenderData();

}

可以看到 onLoad 函数里面 直接调用了一个私有函数, 根据定义的函数名 翻译过来就是 强行更新渲染数据.

所以在游戏源码中可以这么写

// 这里是ts写法

// js 可以直接调用

let label = this.node.getChildeByName(cc.Label);

label.string = "123";

(label)._forceUpdateRenderData();

// 处理后面逻辑

// ...

方法二

这个延时时间可以再缩短

let label = this.node.getChildeByName(cc.Label);

label.string = "123";

cc.tween(this.node).delay(.1).call(() =>{

// 处理后面逻辑

// ...

}).start();

方法二的更安全, 因为方法一直接调用了label的私有方法,风险更高

但是方法一更直观,没有那么多异步的写法,

方法一的用法没有问题,只是语义不合法,而且是引擎不想让你知道的方法.

写法很多种, 自己选择.

Cocos2d-x或Cocos Creator引擎中,可以通过编程的方式获取Label的颜色属性,并且修改它们的值。以下是如何操作的基本步骤: 1. 获取Label对象的颜色属性: Cocos2d-x中的Label类继承自Sprite,所以它拥有color属性,通常是一个Color对象。你可以直接访问这个属性来获取颜色值。 ```cpp // Cocos2d-x 示例代码 auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24); Color3B color = label->getColor(); // 获取颜色属性 ``` 2. 修改Label对象的颜色属性: 获取到颜色属性后,你可以创建一个新的Color3B或者Color4B对象,并设置新的颜色值,然后将这个新颜色赋值给Label对象。 ```cpp // Cocos2d-x 示例代码 Color3B newColor = Color3B(255, 0, 0); // 创建一个新的颜色对象,这里是红色 label->setColor(newColor); // 修改Label颜色为红色 ``` 3.Cocos Creator中操作类似: 在Cocos Creator中,Label组件的颜色也可以通过脚本进行获取和修改。 ```typescript // Cocos Creator 示例代码 let label = this.node.getComponent(Label); let color = label.color; // 获取颜色属性,返回的是一个Color对象 ``` 修改颜色值也是通过设置组件的color属性来完成的。 ```typescript // Cocos Creator 示例代码 label.color = Color.RED; // 修改Label颜色为红色 ``` 需要注意的是,Cocos Creator使用的是TypeScript语言,因此涉及到的类和属性的访问方式与JavaScript类似,使用`.`操作符访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值