版本1.8.1
nodeContent.getComponent(“cc.Label”).string = content.data.content;
以上数据是服务端返过来的,数据没有问题。

但是表情在换行的时候会导致不显示,我猜是字符断了的原因,但是不知道该怎么解决,请大家帮忙看下。
有的是文字+表情,有的是数字+表情,有的英文+表情,宽都是不等的。。。
稍等,我这边研究一下,给你个方案
好的,麻烦了。
先看编辑器里面的情况:



实际运行效果:


需要自定义引擎,改动的引擎文件:
https://github.com/cocos-creator/engine/blob/master/cocos2d/core/utils/text-utils.js
新增label_firstEmoji和label_lastEmoji
label_lastEnglish : /[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁё]+$/,
label_firstEnglish : /^[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁё]/,
label_firstEmoji : /^[\uD83C\uDF00-\uDFFF\uDC00-\uDE4F]/,
label_lastEmoji : /([\uDF00-\uDFFF\uDC00-\uDE4F]+|\S)$/,
label_wrapinspection : true,
fragmentText方法中,加入代码:
//To judge whether a emoji words are truncated
if (this.label_firstEmoji.test(sLine)) {
result = this.label_lastEmoji.exec(sText);
if (result && sText !== result[0]) {
fuzzyLen -= result[0].length;
sLine = text.substr(fuzzyLen);
sText = text.substr(0, fuzzyLen);
}
}
目前可以用上述的思路去解决换行的问题,包括可以定制一些自己换行的规则。关于emoji表情换行这个问题,我们后续版本会进行修复https://github.com/cocos-creator/engine/issues/3589
你好,我升级到了2.0.2,修改了text-utils.js文件. 但是还是不可以。。。
text-utils.rar (2.4 KB)
你改完有使用gulp重新构建引擎么?另外如果你是修改的备份引擎,需要修改引擎的路径
https://docs.cocos.com/creator/manual/zh/advanced-topics/engine-customization.html
谢谢,可以了


