既然是因为默认为一个单词,那换行的时候加一个空格符行不行,这样就不会被判断为一个单词了吧。。
试了下如果是bmfont char模式可以将assembler.updateColor 方法替换,在写入顶点颜色数据的时候直接把后面几个字符刷成透明色。这样可以保证字体的位置始终不变。
let assembler = this.lblText._assembler;
assembler.updateColor = (comp, color) => {
let uintVerts = assembler._renderData.uintVDatas[0];
if (!uintVerts) return;
color = color != null ? color : comp.node.color._val;
let floatsPerVert = assembler.floatsPerVert;
let colorOffset = assembler.colorOffset;
let k = 0;
// showCount表示要显示的字符数,在外部控制
let showVertsCount = that._showCount * 4;
for (let i = colorOffset, l = uintVerts.length; i < l; i += floatsPerVert) {
if (k < showVertsCount)
uintVerts[i] = color;
else
uintVerts[i] = 0; // 后面的字符刷成透明色
++ k;
}
}
调整显示字符数的时候,增加showCount,并设置颜色的脏标记即可
this._showCount += 1;
this.lblText.node._renderFlag |= cc.RenderFlow.FLAG_COLOR;
不过对于非bmfont或非char模式,这种方式没有效果。
字体渲染的不同情况太多,已经看晕了。
虽然我没看懂,但是不影响我说一句大佬6p
不是这个问题。。。是因为我单字符输出,可能每行最后一个单词会出现跳行的问题
昨天的问题用shader处理了,新问题来了。。。由于换行导致的参差不齐的问题,感觉始终还是的用“-”手动去连啊。。。。这就很难受了
需要的自取,自己用的就没写注释了
lineWidth传的单行宽,lineHeight是单行高,width是当前显示宽度,height是节点高度
type-writer.effect.zip (909 字节)
我的使用代码:

// 取文本宽度这里赋值完成的当前帧获取不到实际宽度,做了个延时到下一帧获取

// 取节点高度这里我是做了个进场动画,进场后再取的高度


新问题还好吧,正常单词长度有限,大部分情况下尾部不会留很大的空
但愿如此。。。如果说起来了我就叫美术出成图片算了 
本身我这也不好布局
如果你的每个字符是等宽的,你就能直接算出来第几个需要加连字符了,如果不等宽,假如知道每个字符的宽也能每次打出一个字就知道增加了多宽,也能算出连字符的位置,手动打就太累了
确定字体的话可以脱机算一下每个常用字符的宽度记下来?
把底层字符串处理的方法copy出来改改就行了。底层换行也是加\n实现的吧我记的没错的话
我去看看 
首先空格和其他就不等宽。。。然后再加其他符号就更难受了
难受了,你这是3.x的吧。。。?2.x的不一样。。。
2.4.5
2.4.2搜不到。。。
刚找到了,正在看
文字一开始全部显示, 然后用mask控制



