在CEGUI显示GIF图像,简单的聊天窗口实现方式.

在CEGUI显示GIF图像,简单的聊天窗口实现方式.

       author:expter
       date:   2010/07/31
   
    上次写的超链接是重写了一个单独的超链接控件,主要实现文本的鼠标事件和文本下划线,静态图像的显示,主要写的渲染过程,这次为了解决动态图片(比如gif有多帧实现的解决方案).

    注:主要针对当前CEGUI的最新库0.7.1。

    目的:在游戏聊天框中可能有一个聊天表情,次表情是动态的,需要显示动态表情图片,同时可能有超链接等功能,我们约定一种解析格式,然后输入表情代码或者超链接内容即可显示我们需要的功能。
 
    实现方式: 
        由于针对聊天窗口,所以这里聊天窗口内容采用CEGUI::ListBox,每条消息内容为ListBoxTextItem,由于ListBox有滚动horzScrollbar条,而一般聊天窗口没有horzScrollbar此功能,所以假设一段话过长我们需要才分内容,可能一条消息包括多条ListBoxTextItem。每行里面可能有文本,表情,图片,以及超链接等.
      
       由于CEGUi不能直接解析Gif文件,我们需要把gif的每一帧全部到出来,然后实现一个当前表情anim控制类,表情管理变量,文件解析类TalkRenderedStringParser。
       Anim主要记录当前表情应该为那帧的哪张图片。
      表情管理主要记录当前所有的动态表情,每帧时间到达的时候开始渲染。
      TalkRenderedStringParser还是一个文本解析类。

 

简单的ChatList的主要文本如下:
[C FFFF0000]StaticTxt test1![\\ 1] [\\ 3]
dasd[\\ 2] [\\ 3] [\\ 4] [\\ 1] [\\ 5]

其实是动态表情,只是切的图片不能显示了:

要实现一个与游戏相关的聊天窗口基本功能都具备了,这里包括实现超链接,表情图片,图片的功能。

然后只需要制定分频道等功能分别显示不同的聊天信息。
在CEGUI显示GIF图像,简单的聊天窗口实现方式._第1张图片


源码功能上相对比较简单,CEGUI库做了相应的修改。


               

你可能感兴趣的:(在CEGUI显示GIF图像,简单的聊天窗口实现方式.)