OEGUI0.2版本放出 支持SDKTray已经实现的所有GUI组件

一 介绍

    OEGUI是一个完全基于Ogre1.7的GUI组件.这个组件在Ogre的OverlayElement的基础上,添加了功能,实现了一个轻量级的GUI解决方案.

     下载地址:http://download.csdn.net/source/2297691

二 特性

    1 支持使用Ogre::Overlay脚本创建GUI

    2 各个组件的外观以及功能均可以运行时任意变换.比如,你可以让一个button随时成为一个Scroll(虽然大多数情况下不会这么做.)

    3 学习简单 使用方便 上手容易 这是一个轻量级的解决方案

三 0.2版本的更新

    1 更正了一些0.1已知的BUG(Ps:由于时间有限,目前只在Pixel坐标模式下测试过)

    2 WidgetOverlayElement 有关改变外观的功能,被独立出来成为一个单独的SkinAction功能类

    3 强化了ColourTextAreaOverlayElement的功能.现在支持设置参数,以字符为单位,把文本放在屏幕上不同的任意位置.

    4 Action获得了重大更新.现在一个Action分为MouseAction KeyAction和FrameAction3个子类,每个具体的派生类则实现特定的GUI功能.这些具体的Action如下:

     MouseAction:Skin Drag HScroll VScroll PopUp Progress Rect RectWithoutBorder Round Ellispce

     KeyAction:Input

     这些类具体的介绍请看第五条.

四 OverlayElement扩展介绍

     WidgetOverlayElement:所有GUI组件的基类.这个类保存不同的材质参数,从而实现不同状态下外观的变化.除此之外,还添加有基本的响应动作接口.一个Widget可以随意挂接任意个数的Action类,以便实现不同的行为.一般来说 Widget的各个参数都可以通过脚本来设置,在程序中用到的API接口主要是一些查找Action的辅助函数.应该说这些辅助函数都是一些"偷懒"的函数,因为System提供了一个根据名字来实现全局查找的功能.但对于那些由脚本创建的Widget,由于Ogre独特的脚本命名机制,你可能不希望花费心思去研究这个Widget的名字应该是什么.

     根据Ogre脚本命名机制,子Widget的组件为父组件的名字加脚本中的名字.因此使用后缀匹配进行查找是可以简化工作的.查找到第一个名字的末尾为"suffix"的组件,并且是对应的type的时候,函数返回.这个函数只返回符合条件的第一个结果,所以如果希望查找的结果和自己的预期不出偏差的话,写自己的脚本的时候,应该注意所有的Widget名字的末尾都不应该相同,也不应该有包含的情况发生.

     OverlayElement* findChildElementBySuffix(const String &suffix,const String &type);

     OverlayElement* findRelativeElementBySuffix(const String &suffix,const String &type);
     Action* findChildActionByTypeName(const String &type);
     Action* findRelativeActionByTypeName(const String &type);

     这4个接口findChild版本在自己的子组件中查找,这个查找包括"child的child".而Relative版本功能更为强大,所谓Relative指的是所有与这个Widget有父子关系的组件,包括"间接"的属于那种"远房表亲"的关系.另外,这几个接口都不查找自身所属的Action.

    

     ColourTextAreaOverlayElement支持显示区域的设定.可以指定一个区域,让文本在这个区域中自动排列,多余的文本则会自动被裁剪.另外,这个函数还有一个接口,支持人为设定每个字符的具体位置.你设置可以把第一个字符放在左边,第2个字符放在右边,第3个字符放在中间.

五 Action扩展介绍

     Action应该是OEGUI最重要的模块.这些Action的扩展使得WidgetOverlayElement具备了响应时间的功能

     SkinAction:这个类的功能实现了Widget外观随鼠标位置和动作的变化而变化的功能.这个功能在0.1版本中写进了WidgetOverlayElement类.现在把这个功能独立了出来,以便支持不同的改变皮肤策略.但是,一个Widget构造的时候,会默认添加这个Action,所以大多数时候不用把这个写入脚本.

     RectAction,RectWithoutBorder,Round,Ellispse 这个4个Action 实现了让一个Widget如何判断响应鼠标事件的策略.使用Rect,当鼠标位于这个Widget的矩形区域内的时候,则响应鼠标点击 移动等事件.Round则是为一个最大的内切圆,Ellispse设定检测区域为一个内切的椭圆.

     Drag 这个Action实现了自由拖动的效果.这个类有一个接口,可以设定,移动的时候是否和父组件一起移动.默认设置为true.另外,这个类还可以设置参数,指定拖动的响应区域.默认区域为整个Widget.

     HScroll VScroll 横向和竖向的滚动条.这2个类从ScrollAction虚类派生,通过不同的策略实现不同的拖动效果.事实上如果愿意,可以写一个在特定曲线上拉动的滚动条.

     PopUp 实现了弹出菜单的效果.本质上,当一个PopUp的Widget被点击的时候,一些副本将被拷贝.但是,不管使用是原型还是拷贝的指针来获得数据,都可以获得相同的结果.

     Progress 进度条,根据设定的数据改变自己的长度.这个ProgressAction是自适应的,会自动根据父组件的宽度和高度自动改变大小.

     Input 实现文本的输入效果,支持中文输入.需要说明一点的是,由于Ogre本身的类继承关系,一个TextArea不是一个Container,所以一个ColourTextArea没有响应事件的功能.但是,在脚本中仍然需要在ColourTextArea的区域中添加Action属性,这样才能让一个Action和一个ColourTextArea相联系起来(程序中使用API也是可以的,但是为什么不放在脚本做这个事情呢?).而这个Action本身,则会添加入这个ColourTextArea的父Widget的Action列表中去.

     最后提一下FrameAction.这个FrameAction实现了Ogre的帧循环接口.所以假如有什么希望系统能自动更新的,这个正是所希望的.在代码包附带的Demo中,实现了一个Debug的FrameAction.这个Action把一个竖向的滚动条和一个进度条相联系起来,并且动态更新一个ColourTextArea的caption,显示目前的"进度".

六 demo 截图

     我承认这个看上去不是那么激动人心,但是假如理解了Widget-Action架构,你会为你所拥有强大的可控自由度而疯狂.

     这个截图中间的那个长条是一个VScroll,竖向的滚动条,在这个下拉条上面,有一个进度条和一个ColourTextArea,程序使用了一个Debug的Action,把这个3个组件相联系起来,实现了联动更新的效果.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值