勤能补拙,Expter

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

基于CEGUI的StaticText的超级链接实现

    基本上实现一个基于静态文本多任务的过程.

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

目的:游戏制作过程中一般打开NPC会弹出一个对话框,一般对话框就是显示一段话,有图片,超链接,文字,同时文本分别有不同的颜色!
那么只要我们输入一段文本,对话框的控件解析文本定义好的标签然后显示所有文本内容和图片即可。

实现方式: 
1.超链接控件既要响应点击消息,又要有超级链接标记的下划线。实现方式主要参考了Button的Clicked事件,StaticText的render渲染过程,重新写的一个基于超级链接组件。
2.文本解析利用了当前CEGUI的版本的BasicRenderedStringParser类,我们只需要继承此类,然后设置系统默认的文本解析类为我们当前的类。
3.写超级链接组件的渲染过程主要方便支持CELayoutEditor的可视化编辑。

实现结果:
1.文本显示颜色。
2.换行操作。
3.支持超级链接的显示,以及事件响应和事件处理,事件响应为CEGUI::HyperText::EventClicked。
4.超链接的下划线绘制。
5.支持图片显示和支持图片事件响应。


假设我们的解析文本如下:
标签定义如下
[N]则是换行字符
[C]字体颜色
[A]超级链接
[M]图片

相对来说编写此文本比较简单.

具体用法
xxx             显示文本xxx
[C  XX]      xx表示32位的字体颜色
[A 1: XX]   xx 超级链接显示内容。
[M  xx]       xx表示图片名字

colorTest:[N]
StaticTxt test1![N]
[C FFFF0000]StaticTxt test2!    [N]
[C FFFFFF00]StaticTxt test3!   [N] [N] [N]

[C FFFF0000]HyperLink Test:  [N]
[A 1:this is the Hyperlink!this is the  Hyperlink!][N]
[A 2:this is the second Hyperlink! this is hyperlink!!!][N]
[A 3:this is the third hyperlink!this is hyperlink!this is hyperlink!this is hyperlink!]
[N] [N] [N]
Image Text:[M 381] [M 286] [M 669]


具体过程:


后期目标支持动画的显示,比如GIF格式图片.

实现过程相对繁琐,而且涉及datafiles配置一些处理。

可能真正游戏界面上的实现可能会更丰富,其实也就是增加几个标签然后解析即可。


注:上次听盖老板说有本书专门介绍足球AI,然后专门去买了,看其介绍他实现上足球仿真AI专门实现比较智能,先学习学习他的在继续写我的了。。

posted on 2010-07-22 22:12 expter 阅读(2619) 评论(9)  编辑 收藏 引用 所属分类: 其他学习笔记工作笔记算法与数据结构

评论

# re: 基于CEGUI的StaticText的超级链接实现 2010-07-23 08:42 ccsdu2009

注:上次听盖老板说有本书专门介绍足球AI,然后专门去买了,看其介绍他实现上足球仿真AI专门实现比较智能,先学习学习他的在继续写我的了。
看到上次你写的 很容易联想到那本书
比较当前游戏人工智能书就那么几本  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现[未登录] 2010-07-30 09:59 StarX

我们之前支持动画显示时是先用WTL把gif文件拆成单图,再把它一张一张的画出来。  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现[未登录] 2010-07-30 09:59 StarX

@ccsdu2009
可以推荐是哪几本吗?  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现 2010-07-31 11:21 expter

@StarX
确实,我现在也是通过这个方法实现的。  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现 2010-12-02 13:46 Chhawk

学习了,请问:你说的“重新写的一个基于超级链接组件”是指StaticText的组件,还是指新增加一个控件呢?盼复  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现 2010-12-02 14:43 lz

@Chhawk
就是写了一个有staticText和超链接的新控件 HyperLink  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现 2010-12-03 11:21 Chhawk

@lz
谢谢回复,不知道下划线你是怎么实现的?  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现 2010-12-03 15:55 lz

@Chhawk
用一张图片实现的。
根据字的长短,绘制图片的长短。  回复  更多评论   

# re: 基于CEGUI的StaticText的超级链接实现 2011-07-27 11:48 马古斯

@lz
和我想的一样,下划线用图片,空开一定距离渲染。
但是网上说有更简单的方法,不知道是什么  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理