聊天框

来源:互联网 发布:在淘宝上怎样申请退款 编辑:程序博客网 时间:2024/04/28 17:16

项目需求:

游戏中可以多人聊天,即有一个信息输入框有一个信息框;添加表情;能执行复制、粘贴命令;聊天信息框中,最多容纳50行信息,达到上限后,每录入一条信息,自动从队列删除一条信息。

基本思路:

借助google的RichTextField组件。

添加表情是一个模拟的效果。信息框中添加一个TextField组件,用来存放信息;还要有一个表情容器,点击表情时,对应生成该表情的图片,存放在表情容器中,同时文本中在光标处生成一个占位符,并且根据这个占位符的位置设置表情的坐标值。这样把表情容器和TextField组件同时加入一个父容器中。就可以达到文本+表情的效果。同时还会有一个表情跟表情符号的对应表。

至于复制、粘贴就比较别扭了,我现在的方法是:复制的时候将文本解析为文本+表情符号的格式;在粘贴的时候在反解析。

碰到的问题:

首先当然就是各种索引值、各种光标位置啦。。。各种头大。

然后还有复制粘贴,TextField不支持Copy、Paste事件,我是用的监听键盘按键的方法。因为我的复制粘贴都是放在keyup里面的(keydown下监听不到ctrl+c,ctrl+v),复制仅仅是记录选择的文本,然后在粘贴的时候对该文本进行一个解析,同时显示。这样就会在粘贴的时候(ctrl+v按下的时候自动执行一个粘贴操作)出现问题,所以我又在keydown的时候对剪切板进行了一个处理。这就意味着复制粘贴跟系统剪切板是没有关系的(郁闷啊,老感觉绕了一个大弯,然后还会有不能复制外来文本的问题)。

另外,对输入一连串表情后,输出框也会出现显示问题,主要是因为输出框把它作为一串英文对待了,然后就会出现占位符自动换号而表情依然在不发生自动换号的位置。

最麻烦的就是在发生内容改变的时候,同时对表情进行的处理了。

继续研究~