当前位置: BOLT界面引擎 > 知识库文章 > 元对象的zorder说明

元对象的zorder说明

作者:李亚星 2012-08-23

                                               元对象的zorder说明

 

zorder是所有元对象的基础属性,包括实窗口对象和非实窗口对象。

 

zorder有下面核心特性:

l  子对象zorder默认比父对象zorder100

l  同一个父对象下的同级子对象,zorder默认相同

l  子对象zorder可以小于、等于父对象,取决于使用者怎么配置

l  zorder有相对zorder和绝对zorder

n  相对zorder是该对象相对于父对象的,默认是100,可动态修改

n  绝对zorder是该对象相对于所在对象树的根对象的,不可直接修改,相对zorder改变后,绝对zorder也会相应的改变

l  zorder值越大,那么

n  对于可渲染对象,在绘制中,该对象会越靠前,会覆盖低zorder的对象;

n  在命中测试中会被优先取到,比如鼠标点击和拖放

n  对于实窗口对象,窗口也会在zorder低的窗口上面

l  两个元对象zorder相同的话,并且区域相交,那么绘制和命中测试结果等随机

l  由于实窗口对象的特殊性,实窗口对象会永远在非实窗口对象上面,非实窗口对象的zorde只和所有非实窗口对象之间有效,实窗口对象的zorder只在实窗口对象之间有效

 

一个元对象的zorder,影响到对象下列特性:

1.         对于可渲染对象,比如ImageObjectTextureObject,影响到对象的绘制,zorder高的在上面

2.         对于鼠标点击测试,zorder高的优先被命中

3.         对于实窗口对象,zorder影响该实窗口对象是否在其它实窗口对象之上

4.         对于元对象上的拖放,zorder高的优先处理

5.         对于控制对象,zorder高的优先被处理

6.         对于对象树的HitTest方法,zorder高的 优先被处理

7.         对于对象的cursor熟悉,zorder高的对象会被优先采用

 

Zorder有下面的接口和属性:

1.         元对象xml属性 zorder,用以指定该对象的相对zorder

比如 <zorder>10</zorder><zorder>-10</zorder>

 

2.         元对象有下述方法来获取和设置zorder

a)         SetZorder 设置相对zorder

b)         GetZorder 获取相对zorder

c)         GetAbsZorder 获取绝对zorder

 

自定义xml控件的zorder注意事项

由于自定义控件是一组元对象的组合,并且是一个subtree结构,因此自定义控件的zorder不再像是元对象那样只占一个点,而是有一个zorder区间的概念

 

这种特殊性,对于控件的使用者来说,需要特别小心,比如下面

<obj id=”obja” class=”abc.xmlcontrol”>

         <children>

                   <obj id=”objb” class=”ImageObject”>

….

 

这种情况下,objbzorder默认比objazorder100,这里的obja只是指这个控件的根对象! 假如这个控件里面有很多层子对象,那么不能保证objbzorder一定比所有的obja里面的子对象高,需要配置一个更高的zorder才可以

 

所以在控件开发和使用中尽量遵循下面的规范:

l  自定义控件的zorder尽量保持在一个较小的区域,最好是能在100内搞定,可以配置自定义控件里面的子对象zorder为合适的负值来搞定

l  自定义控件的使用者来说,需要认识到该控件的zorder是一个区间而不是一个点,适当的调整子对象来避免zorder出错

 

 

迅雷公司 版权所有 Copyright 2003-2010 Thunder Inc.All Rights Reserved. 意见反馈:xl7doc@xunlei.com