首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

GUI界面的"场景管理"有关问题

2012-03-02 
GUI界面的场景管理问题?这里所讲的场景管理不是游戏中的场景管理,而是指界面GUI中的场景管理。虽然二者有

GUI界面的"场景管理"问题?
这里所讲的场景管理不是游戏中的场景管理,而是指界面GUI中的场景管理。
虽然二者有很多相同的地方。

1、用什么树结构表示?在游戏中的场景管理好像用空间划分树(二、四、八叉树)就可以了。
但GUI中由于窗口与控件之间有父子包含关系。因此父子包含关系形成的树应该是主结构吧。
是否可以把空间分割树也加进去?

2、游戏中一般用树包含同一类的对象,比如MESH类的。但GUI中,控件的类型是多种多样的。
比如窗口,按钮,列表框之类的。这些不同类对象,怎么加入到同一棵树中?

3、消息传递机制?这个一般是什么原理来处理的?在CEGUI中哪部分源代码是处理这个的?
没有什么头绪。。。请指教。

[解决办法]
八叉树是3d的概念,屏幕四叉树就够了,cegui有加入四叉树吗?
下载cegui,看一下sample的例子程序,
[解决办法]
1. CEGUI 他就是个树结构

树不仅仅有八叉四叉二叉哦。。

每个父的window都会有一个子的window列表

而子window列表又含孙window列表

子子孙孙无穷尽也 就变成树结构了


2 .所有窗口有一个基类 widget

每个widget 有个成员 vector< widget*>

生成不同窗口的方式是采用类工厂形式的


3.看看消息 最上层有个 injectMouseMove对吧

进去看 他传给了焦点窗口的 InjectmouseMove

焦点窗口判断自己要不要处理这个 消息 处理就返回true

否则交给自己的子窗口 一直到某个子窗口返回true

否则就返回false表示不处理这个消息

[解决办法]
C++的话,继承就不可以解决你说的 “。但GUI中,控件的类型是多种多样的。比如窗口,按钮,列表框之类的。这些不同类对象,怎么加入到同一棵树中?” 问题啦。

每天回复获取10分可用分
[解决办法]
每天回复即可获取可用分!
[解决办法]
所有的控件,都继承自Widget,父节点管理了一个子节点指针列表:
vector<widget*>
这样就可以不用知道子结点是什么具体的控件,只要把通用的功能实现在widget里

热点排行