Egret 显示容器

Posted RitaLee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Egret 显示容器相关的知识,希望对你有一定的参考价值。

1,显示容器:所有的容器都继承自DisplayObjectContainer , DisplayObjectContainer 又继承自DisplayObject;

2,想定义一个容器只要创建一个类,并使其继承自DisplayObjectContainer 即可,想实现graphics功能,只要继承Sprite类即可;

3,显示对象的操作:添加,删除,检测,访问,设置堆叠次序;

建立显示对象

var spr:egret.Sprite = new egret.Sprite();

spr.beignFill(0x009900);

spr.drawRect(0,0,100,100);

spr.endFill();

this.addChild(spr);  //建立完后要添加显示对象

显示列表是一个树状结构,spr的上一级就是this,也就是文档类,文档类是stage舞台的第一个对象;

删除显示对象:this.removeChild(spr);

4,显示对象的注意点:

1)显示对象独立于显示列表:当显示对象被删除后,显示对象只是不再参与渲染,但是仍然在内存常驻;

2)显示对象的坐标系是相对坐标系,而非绝对坐标系,就是相对于父级原点的位置;

3)多次添加显示对象到显示列表:同一个显示对象无论被添加多少次,在屏幕上只会显示一次;

例如:将一个显示对象A添加到B容器中,又被添加到C容器中,则第二次添加A对象时C.addChild(A),是先从B容器上删除A对象,然后再添加到C容器上;

4)删除操作的注意点:

删除一个显示对象时,该显示对象必须有父级也就是必须在显示列表中;否则会报错;

因此,每次删除显示对象前,都对其进行一次判断;

if(spr.parent){

  spr.parent.removeChild(spr);

}

5,深度管理:

每个显示对象在显示列表中都有一个深度值,就是堆叠次序,称之为”z-次序‘’;

egret容器中的深度从0开始,第一个被添加的对象的深度值就是0;也即是位于容器的最底层,后加的显示对象覆盖在它上面;

添加/删除指定深度的对象:

使用addChild()添加显示对象时,,默认是按照次序一次堆叠,如果想要插入到指定深度处,使用容器.addChildAt(显示对象,深度值)方法;

可以使用removeChild(spr)删除显示对象,也可以使用removeChild(深度值)来删除指定的显示对象;

6,访问容器子对象

1)通过获取深度值获取容器子对象:

容器.getChildAt(深度值);

2)通过name属性获取:

可以先为显示对象添加属性name:spr.name ="xxxx";

容器.getChildByName("xxxx");

以上是关于Egret 显示容器的主要内容,如果未能解决你的问题,请参考以下文章

Egret 项目文件夹配置和基本容器动画

Egret Notes

egret.sprite和egret.shape的区别

Egret之egret.ScrollView

Egret事件机制

3, 容器内部显示对象相对源的切换 和 事件的添加