现在的位置: 首页 > 综合 > 正文

基于OgreBites::Widget 实现自己的GUI系统(1)

2013年05月19日 ⁄ 综合 ⁄ 共 1010字 ⁄ 字号 评论关闭

      分析完了Ogre的sdktray之后,现在尝试在widget的基础上实现自己的GUI系统.这个gui系统应该分为3部分.widget是一部分,一个全局的管理类应该是一部分,还有一部分则是用户对widget进行组合实现自己的功能部分.sdktray中把后2个功能整合在一起了.

      首先是widget部分,这些组件的底层功能Ogre已经实现了,唯一需要更改的就是他们的外观,为了实现这一点,更改一下他们的构造函数,增加2个参数,其默认值设置为Ogre硬编码的值,这样通过传递新的脚本参数,就可以获得新的外观.需要注意的地方是,这些脚本的命名要符合代码中的命名规范.还有一个需要更改的地方在对鼠标状态的响应上,某些widget使用了setMaterialName()来变更不同状态下的显示.而这个函数的参数也是硬编码,因此也需要更改.为了实现这一点,在widget中添加2个stringvector,保存不同状态下材质的名称.

      然后是一个管理widget的类.把这个类命名为OEWindow.一个OEWindow包括了一些widget,并且拥有自己的listener响应事件.虽然这个"window"和一般意义上的window不大一样,但从功能上看,他的作用是充当一个拥有相同行为的容器,这点来说 和一般意义的windows是差不多的.但是假如不给oewindow自身实现一个overlayElement的话,这个oewindow就完全是透明的.

      最后是全局的管理类,把这个类命名为 OEGUISystem,这个类应该是个singleton的类.其功能应该包括:1 处理鼠标.因为一般而言屏幕上只有1个鼠标.2 处理事件,包括键盘和鼠标事件.3 管理已经注册了的windows.

 

      今天实现了OEWindow类,明天实现OEGUISystem类.具体代码计划发到CSDN的下载空间上去.

      下面是使用的一个示例代码:

 

     

抱歉!评论已关闭.