25
2015
11

createjs中Text中文不换行的问题(2)

之前就提到过createjs中Text中文不换行的问题,之前的解决方法是在中文之间加空格。由于项目中要用到,加空格的方法不合适,所以自己改了一下源码。

12
2015
05

createjs中Text中文不换行的问题

前段时间用createjs做了个小游戏,发现一个问题:在使用Text显示文本的时候,中文内容无论多长都会不换行,后来在每个文字之间都加入一个空格,总算能换行了。

看了看createjs的源码,Text类的 _drawText方法中有这么两句:

  1. var hardLines = String(this.text).split(/(?:\r\n|\r|\n)/);

  2. var words = str.split(/(\s)/);

结合源码上下文来看就是,先根据“\r\n|\r|\n”来分行,然后一行内再通过"\s"来分词,单词中间是不换行的,单词之间可以换行。英文单词与单词之间是有空格的,而中文文字之间是没有空格的,所以中文会有问题。中文换行实现起来并不难,只是createjs的作者没有考虑到吧。这点lufyLegend做的就比较好。

最近createjs官网还是上不去,也懒得去看源码有没有更新了。目前做的时候是在中文之间插入空格,效果看着也还可以。

这个问题并不是什么大问题,解决起来也不难,知道了就好,就不再多说了。

«1»