前段时间用createjs做了个小游戏,发现一个问题:在使用Text显示文本的时候,中文内容无论多长都会不换行,后来在每个文字之间都加入一个空格,总算能换行了。
看了看createjs的源码,Text类的 _drawText方法中有这么两句:
var hardLines = String(this.text).split(/(?:\r\n|\r|\n)/);
var words = str.split(/(\s)/);
结合源码上下文来看就是,先根据“\r\n|\r|\n”来分行,然后一行内再通过"\s"来分词,单词中间是不换行的,单词之间可以换行。英文单词与单词之间是有空格的,而中文文字之间是没有空格的,所以中文会有问题。中文换行实现起来并不难,只是createjs的作者没有考虑到吧。这点lufyLegend做的就比较好。
最近createjs官网还是上不去,也懒得去看源码有没有更新了。目前做的时候是在中文之间插入空格,效果看着也还可以。
这个问题并不是什么大问题,解决起来也不难,知道了就好,就不再多说了。