QuartzUI 0.5 项目代号SOAR。
SOAR目前在测试阶段,相信不久就会和大家见面了。SOAR 采用了全新的XML作为UI的基础数据,更加灵活高效的处理API控件。采用了Scene概念,将控件分空间管理,只有当前运行的Scene中的控件才能收到UI响应,极大的提高了处理速度,降低了运算负荷。数据结构采用双向树形结构,管理更加容易。在控制上更加简单,消息传递上也更加简洁。
SOAR这个版本开始把更多的自由度提供给开发者,代码会逐渐公开,目前API解析函数已经公开,这样通过QuartzUI提供的标准API就可以把自己生成的新的控件加入到API解析函数中,完成任意类型数据的加载。这些细节将在以后逐渐公布。
这里来讲解一下SOAR支持的XML基本框架:
<QTUISYSTEM Texture="gui/UI.png"> <Img x='50' y='80' Basic_top=164 Basic_left=16 Basic_right=390 Basic_bottom=400 name="bg"></Img> <Bar name="MenuBar" x='0' y='0' width=132 height=30 Basic_top='185' Basic_left='0' Basic_right='316' Basic_bottom='29'> <Menu name="EditMenu" x='20' y='0' width=132 height=30 Basic_left='185' Basic_top='0' Basic_right='316' Basic_bottom='29' Over_left='185' Over_top='31' Over_right='316' Over_bottom='60' Pass_left='185' Pass_top='66' Pass_right='316' Pass_bottom='95'>文件 <Button name="bt1" x=0 y=30 width=132 height=30 Basic_left='185' Basic_top='0' Basic_right='316' Basic_bottom='29' Over_left='185' Over_top='31' Over_right='316' Over_bottom='60' Pass_left='185' Pass_top='66' Pass_right='316' Pass_bottom='95'>新建</Button> <Button name="bt2" x=0 y=60 width=132 height=30 Basic_left='185' Basic_top='0' Basic_right='316' Basic_bottom='29' Over_left='185' Over_top='31' Over_right='316' Over_bottom='60' Pass_left='185' Pass_top='66' Pass_right='316' Pass_bottom='95'>打开</Button> <Button name="bt3" x=0 y=90 width=132 height=30 Basic_left='185' Basic_top='0' Basic_right='316' Basic_bottom='29' Over_left='185' Over_top='31' Over_right='316' Over_bottom='60' Pass_left='185' Pass_top='66' Pass_right='316' Pass_bottom='95'>保存</Button> <Button name="bt4" x=0 y=120 width=132 height=30 Basic_left='185' Basic_top='0' Basic_right='316' Basic_bottom='29' Over_left='185' Over_top='31' Over_right='316' Over_bottom='60' Pass_left='185' Pass_top='66' Pass_right='316' Pass_bottom='95'>退出</Button> </Menu> </Bar> </QTUISYSTEM>
【QuartzUI 5.0】QuartzUI 5.0 XML解析代码分析
QTUISYSTEM
QTUISYSTEM是QuartzUI的关键字,没有这个关键字的XML文件QuartzUI是不会解析的。Texture表示的是这一张Scene要使用到的纹理。QuartzUI建议一个屏幕中会出现的所有控件的图片尽量放在一张纹理图片当中。如果当一张纹理放不下的时候,可以采用同时激活两个Scene来绘制,而不要试图同一个Scene使用两张或者两张以上的纹理。
Menu
Menu是一种QuartzUI中被称之为“容器”的控件。它类似于Win32中的窗体。容器中没有具体的绘制和消息处理。它是由多个基本控件组成的,其作用是把基本控件有机的组合在一起,统一处理。 具体的处理过程都由子控件处理自己,整个容器会产生共同效应,统一管理。比如单选控件在一个容器中只可能有一个是激活的,容器中一个控件获得了焦点,这个容器就包含焦点信息等。
Button
Button是一种基本控件。QuartzUI中基本控件目前主要包括按钮、图片、文字、鼠标和输入法。其实按钮也可以是一种“容器”。考虑到按钮使用非常频繁,其操作也不是很复杂,在这个基础上,按钮目前是以基本控件存在的。
<Button name="bt1" x=0 y=30 width=132 height=30 Basic_left='185' Basic_top='0' Basic_right='316' Basic_bottom='29' Over_left='185' Over_top='31' Over_right='316' Over_bottom='60' Pass_left='185' Pass_top='66' Pass_right='316' Pass_bottom='95'>新建</Button>
name: 控件的名称。在程序的执行过程中,由于QuartzUI是自动处理的,控件的响应等都被QuartzUI自行处理掉了。如果要获取某一个控件,比如说要增加一个事件,点击“登陆”按钮系统登录的话,必须获取这个按钮的状态改变。那么唯一能从系统中找到这个控件的方法就是通过名字,然后通过GetElementByName(name)方法获取控件指针。
x=0 y=30 控件坐标。控件绘制在“容器”内的坐标。这个坐标永远是相对于上一层容器的相对坐标。
width=132 height=30 控件长宽,是控件的响应区域。
Basic.....剩下的这些是按钮的变更图片区域。跟原来4.0中的一样。分别是标准状态,鼠标悬浮状态和鼠标点击状态。
[此贴子已经被Admin于2009-7-24 17:20:42编辑过] |