MyGUI 功能与架构

在3.2.0发现了一个好消息,MyGUI终于传出架构文档。

坏消息是文档是俄文的。恨得我想学俄语。

不过幸好有goolge翻译,决定结合源代码将文档啃出来。

友情支持,google翻译:大笑

******************************************************************************************************

MyGUI 功能与架构

Widget 控件

GUI窗口小部件基本构建块 widget是一个矩形区域一些属性和用户交互逻辑部件支持创建一个更复杂的部件层次加载XML和其他功能
支持阿尔法管理透明度
•支持对齐。单一的控件可以和父控件,附加到父控件结构上。类似于设计模式上的组合
支持面罩面罩任何图片)来控制鼠标采摘,能力创建任意形状部件圆形。注,这个面罩的意思应该是一个类似于任意形状的包容盒,可以建立起鼠标相应区。
支持任意光标悬停在widget,光标将采取指定的形式
支持视窗提示工具提示缝合小部件窗口提示但是当你想显示的窗口隐藏widget可以告诉因此,它是可以建造任何窗口的提示
缝合小部件窗口提示的意思可能是讲,Widget不予提示工具绑定,如果需要可以让widget创建。

•支持分离和附加一个层次使浮动建设
MyGUI 的layer 功能还是不错的。运用的gof上的flyweight 模式。
独立层次一个层次rendringa然而,对于复杂的部件客户区窗口(窗口,滚动或有一个弹出式部件儿童(组合使用逻辑孩子配合物理他们真正孩子例如如果你隐藏在ComboBox它隐藏儿童名单窗口下拉列表是那些儿童,我们已经加入,虽然他们身体上的客户端部件
这段说的意思是,widget组合模式。
•支持动态改变皮肤(皮肤 google 翻译对小短句分析的还是挺精确的!
支持动态风格变化行为方式例如任何孩子可以流行,不会切断大小或重叠重叠与其他孩子
应该是laerNode 节点
事实上,部件是虚拟的,它并没有出现,不知道如何做到这一点widget部件有sabvidzhetov列表在于逻辑和显示肩膀 sabvidzhety也是矩形区域构件它们也可以对齐占据了构件任意位置 sabvidzhety通过工厂创建可能有不同的类型类型和设置一个具体的皮肤sabvidzhetov名单当我们指定了皮肤一个部件它创建适当的sabvidzhety输入列表部件

sabvidzhety目前核心

MainSkin - sabvidzhet的纹理和矩形widget的顶部延伸
SubSkin - sabvidzhet表现质感和矩形可能在widget任意位置
TileRect - sabvidzhet的纹理和矩形任意方向任意大小的平铺自己在XML中定义的参数
RawRect - sabvidzhet其顶部提供接入,外部控制可用于实现自定义部件
RotatingSkin - sabvidzhet显示纹理和矩形是可能的相对任意到任意角度旋转
的SimpleText - sabvidzhet显示文本
EditText上 - sabvidzhet显示文字,支持文字,文字换行自动换行,选择和光标位置转变

所以,还有什么可以做sabvidzhetov事实上,非常多,例如:

Sabvidzhet绘图几何文字,而不是纹理
Sabvidzhet显示数字其他复杂的几何形状开罗时,FlashSVG
纹理映射Sabvidzhet blitingomGUI可以实现没有任何3D API
Sabvidzhet显示复杂的数据(如HTML或RTF输出

状态状态

每个都有命名集的数据sabvidzhet steyt史泰登名单默认情况下,状态默认”。每个国家可指定纹理坐标文字位移文字的颜色任何其他任意数据不同数据

用于显示widget的不同状态例如采取的关键一个简单的按钮,通常4种状态
  1. 禁用
  2. 正常
  3. 掠过
  4. 按下
每个sabvidzhet描述所需steyt数据部件改变其状态所有sabvidzhetam并设置当前状态例如在Staten禁用文字通常做一个或灰在Staten文本通常是向下移动一个或两个像素


Layer (Леер,уровень)

层是一个抽象的概念,一个层,那里可能有一个或部件此外,护栏可能是空的。为简单起见,我们可以想像,当我们在看监视器我们在层蛋糕的顶部蛋糕一层将对应唯一的一条生命线负责的行为和显示部件连接到这个命脉每个一个类型,通过工厂创建可以创建自己的风格影响这条生命线的部件包括显示屏或行为什么样的目前使用的指定的XML可以指定额外的数据命脉


层的核心:
OverlappedLayer -层所有部件都在层的容器中可能会重叠,可以提高到构件上方一下就可以了
SharedLayer - 层所有部件一个单一的每一个部件没有单独缓冲区这一层是用于优化基本的应用将永远不会相交部件HUD元素。类似于脏矩阵?

可用于其他任务,如读层:
Otrendrit部件呈现质地的生命线然后申请纹理3D对象
一些质地Otrendrit芸香部件和动画
Otrendrit芸香个别部件纹理显示不是部件(缓存)

控制器(Controller)

控制器是用来改变任何部件的性能,取决于所用的时间的对象。控制器有不同的类型,并通过工厂创建的,它允许你创建任意控制器可以指定在任何部件的控制器所需的XML。是在编辑器的支持。
控制器的核心
ControllerPosition - 生产中的地位部件变化根据指定功能
ControllerFadeAlpha - 变化的阿尔法
ControllerEdgeHide - 窗口边缘移除部件

控制器可以用来改变任何属性部件,一切都在你的想象力限制例如ProgressBar的平稳变化退信模拟印刷等

资源资源


所有正在运行的GUI资源数据资源不同类型的可以创建自己的类型资源是一个对象本身数据存储

核心资源现状
ResourceImageSet - 描述图像动画和团体支持
ResourceSkin - widget的皮肤(皮肤说明
ResourceImageSetPointer - 支持动画光标说明
ResourceManualPointer - 光标在它的纹理和矩形区域一个简单的描述
ResourceManualFont - 描述字体纹理字符坐标
ResourceTrueTypeFont - 字体描述产生FreeType库

一些资源使用核心接口它提供了一个机会,自己的资源,不同的字体或使用复杂的动画游标库版本


当然是MyGUI的重中之重Delegate

委托(委托)


委托是一个裹成一个对象的一个函数的指针。这使得函数调用类型安全简单。无需使用图,表和回调接口。委托维护功能以下类型的指针
全局(静态)函数
•静态类的方法。
•对象的方法
•对象的虚方法
其他特点

独立的渲染它有可能使其他平台修改所需的目的优化现有书面
支持Unicode - UTF8的UTF16UTF32
支持拖放
W32剪贴板使用系统剪贴板支持
•支持HTML中颜色标记一个字符串推导«0000FFblue»将被写入«»
快速系统的RTTI
抽象数据类型可以使用zip档案,如自定义数据流
支持XML资源类型版本为了保持格式

外部工具组件
 
·表格编辑(LayoutEditordlyaoblegcheniya设计
·发电机FreeType库字体资源
·简单的图像浏览器资源ImageSet
·发电机vraperovispolzuetsyadlya生成托管的C ++和C#的包装此外,您还可以配置成其他语言
·demonstratsiivozmozhnostey技术使用GUI设置演示。
·设置单元测试测试一些关键部件证明slozhnyhmetodik








你可能感兴趣的:(设计模式,xml,Google,单元测试,文档,工具)