GUI界面的"场景管理"问题?

CSharp_XinBing1 2011-07-07 09:55:52
这里所讲的场景管理不是游戏中的场景管理,而是指界面GUI中的场景管理。
虽然二者有很多相同的地方。

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

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

3、消息传递机制?这个一般是什么原理来处理的?在CEGUI中哪部分源代码是处理这个的?
没有什么头绪。。。请指教。
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小泰勒 2011-07-17
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
iwantnon 2011-07-17
  • 打赏
  • 举报
回复
楼主呀,这个跟树根本毫无关系的。
gamemagic 2011-07-10
  • 打赏
  • 举报
回复
所有的控件,都继承自Widget,父节点管理了一个子节点指针列表:
vector<widget*>
这样就可以不用知道子结点是什么具体的控件,只要把通用的功能实现在widget里
wuhuwy 2011-07-09
  • 打赏
  • 举报
回复
每天回复即可获取可用分!
ryfdizuo 2011-07-07
  • 打赏
  • 举报
回复
八叉树是3d的概念,屏幕四叉树就够了,cegui有加入四叉树吗?
下载cegui,看一下sample的例子程序,
就是这个怪兽 2011-07-07
  • 打赏
  • 举报
回复
C++的话,继承就不可以解决你说的 “。但GUI中,控件的类型是多种多样的。比如窗口,按钮,列表框之类的。这些不同类对象,怎么加入到同一棵树中?” 问题啦。

每天回复获取10分可用分
  • 打赏
  • 举报
回复
1. CEGUI 他就是个树结构

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

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

而子window列表又含孙window列表

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


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

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

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


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

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

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

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

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

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧