聊天框显示玩家输入信息自动换行的问题。

需要的功能:聊天框中玩家输入文字之后,点击发送之后显示在聊天框中,当字符达到屏幕宽度之后,显示的文字会自动换行。

ShowNode:显示玩家输入文字的一个layout节点。
预制体如下:

代码:

第一种方法如上图:先生成预制体,先绑定到节点下,再根据tag获取当前的预制体,给预制体中的label赋当前输入的文字及玩家名称等信息。在此方法中,获取到的labelwidth值是赋值之后label的宽度,但是达到固定的宽度之后还是不能换行。

第二种如上图:生成预制体之后,先赋值,判断达到固定宽度换行,然后在绑定到showNode节点下。但是此方法中,获得的labelWidth的值一直是预制体中的label的开始宽度,不是给label赋值之后的宽度。
各位大神!帮忙看看错在哪里了。或者有别的方法实现这种功能。

http://forum.cocos.com/t/topic/37438/18

看看是不是你要的

这个我看过了,但是我把他放到预制体中,show_say.getChildByName(“showLabel”).overflow = cc.Label.Overflow.RESIZE_HEIGHT;这行代码感觉不起作用了。一直换不了行。

我刚刚又下载下来用1.7.0正式版试了试,没有问题,有可能是你实例出来的预制还没有执行onload和onEnable,所以没有换行,你最好是先添加到场景,再设置文本内容来试试看

好的,我再试试。

先将预制体添加到showNode节点下,然后再根据tag获取预制体设置内容,但是没有换行。
结果图如下:

当label的宽度大于200时,没有换行。

版本是1.8.0

可以的,我也是1.8.0,这么简单的需求,你代码写太多了,写的越多越容易错

你先在预制体里面设置好,不用代码动态写,代码赋值一下label的内容就可以了

哦,你是想字数少就按照none布局,字数多就按照自动换行

overflow是label的属性,你为啥要改node的overflow属性

少个.getComponent(cc.Label);
这个预制最好单独的写个脚本控制,外部调用只管传参数,不用管你内部咋变化

1赞

就是这个问题,谢谢啦,这个加上就好了。:grin: