一、容器
1、显示容器是用来装放可见对象的,所有容器都继承DisplayObjectContainer类,该类继承自 DisplayObject.也就是所有容器都继承 DisplayObject.容器类DisplayObjectContaine具有以下四类操作:
添加、删除子对象
访问子对象
检测子对象
设置叠放次序
2、常用的容器有Sprite,它继承了 DisplayObjectContainer,而且添加了Graphics的功能。开发者可以自定义一个类继承DisplayObjectContainer或Sprite来实现一个容器:
/** 自定义一个容器类,并在容器内画一个矩形**/
class MySprite01 extends egret.Sprite
{
public constructor()
{
super();
this.drawGrid();
}
private drawGrid(){
this.graphics.beginFill( 0x00ffff );
this.graphics.drawRect( 0, 0, 100,100 );
this.graphics.endFill();
}
}
容器运行效果图:
二、显示列表
我们先思考一个问题:上面的MySprite01容器类和上一章节中的GridDemo01矢量图对象有什么区别?
要解决这个疑问,需要了解显示列表的概念:显示列表的作用是管理容器和容器中的对象,对象处于显示列表中,则可见,从列表中移除则不可见。显示列表由Egret内部维护,开发者只需关注自己创建的对象和容器即可。
关于显示列表,可以直观看成一个树形结构,最上层的stage对象就是“舞台”,它是Egret显示架构中最根本主显示容器,下图是对显示列表的形象拆解。
另外,显示的逻辑结构如下,我们上一章节中的GridDemo01是一个矢量图对象,它是加入到Stage中了,而且不可以再加入其它子显示对象。本章节的MySprite01是一个容器,它可以拥有更多的子显示对象。
我们实现以下代码,画一个简单的GridDemo01图形,并将图形对象加入到MySprite01容器中,这个时候,GridDemo01图形对象就不再是放置到stage根容器中了,而是套在MySprite01容器中。
var gridDemo01:GridDemo01 = new GridDemo01();
var mySprite01:MySprite01 = new MySprite01();
mySprite01.addChild(gridDemo01);
this.addChild(mySprite01);
END.