勤能补拙,Expter

成都游戏Coder,记录游戏开发过程的笔记和心得!

在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库做了相应的修改。


               

posted on 2010-07-31 11:58 expter 阅读(3808) 评论(6)  编辑 收藏 引用 所属分类: 其他学习笔记工作笔记

评论

# re: 在CEGUI显示GIF图像,简单的聊天窗口实现方式. 2010-07-31 14:04 ccsdu2009

cegui太大了  回复  更多评论   

# re: 在CEGUI显示GIF图像,简单的聊天窗口实现方式. 2010-07-31 14:20 expter

@ccsdu2009
现在客户端项目UI用的CEGUI,就是学习下用法。。积累点他的设计思想!
  回复  更多评论   

# re: 在CEGUI显示GIF图像,简单的聊天窗口实现方式. 2010-10-24 05:47 zmy

@expter
这句话我很赞同,因为通用性做的太好,导致复杂难用,且损失了不少性能,而特定游戏项目只用特定一部分,再说UI开发简单没必要这么折腾~不过里面的设计思想确实是好,只能用漂亮来形容,好多地方设计的都是非常巧妙以后碰到类似问题可以借鉴参考~  回复  更多评论   

# re: 在CEGUI显示GIF图像,简单的聊天窗口实现方式. 2011-03-14 11:26 ogre2012

我的动画是实现了,但是不知道怎么结合到聊天窗口中  回复  更多评论   

# re: 在CEGUI显示GIF图像,简单的聊天窗口实现方式. 2011-03-15 15:07 expter

@ogre2012
聊天窗口可以通过listbox来实现。
  回复  更多评论   

# re: 在CEGUI显示GIF图像,简单的聊天窗口实现方式. 2011-12-02 18:13 曹翔

可以给我发一份代码吗?我现在急需这个
谢谢  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理