-addChild删除显示对象-removeChild添加与删除(图)

-addChild删除显示对象-removeChild添加与删除(图)

HTML5游戏引擎(6)-添加删除显示对象-添加显示对象到显示列表-addChild&删除显示对象-removeChild添加删除显示对象

Egret中创建显示对象和渲染显示对象是两个过程。 显示对象创建后,该对象会在内存中,但不会参与渲染过程。 只有将显示对象放入显示列表后,显示对象才会参与渲染过程。 如果要从渲染过程中移除一个显示对象,只需将其从显示列表中移除即可。

添加显示对象到显示列表

创建显示对象后数据报告,您可以将其添加到显示列表中。 首先,绘制一个精灵,它是一个宽高为100的绿色正方形。

var spr:egret.Sprite = new egret.Sprite();
spr.graphics.beginFill( 0x00ff00 );
spr.graphics.drawRect(0, 0, 100, 100);
spr.graphics.endFill();

上面的代码是创建显示对象和测试程序的过程,但是在舞台上什么也看不到。 将spr添加到显示列表中,代码如下:

this.addChild( spr );

添加这段代码后,再次编译运行程序音乐音效,浏览器会看到如图所示的效果:

在这里插入图片描述

代码中的addChild()方法将spr添加到显示列表中。 前面说过,显示列表是一个树形结构游戏引擎列表游戏引擎列表,spr的上层是这个,就是文档类。 文档类是舞台舞台的第一个子对象。

这是当前示例的层次结构示意图:

在这里插入图片描述

删除显示对象

使用removeChild()方法删除显示对象,代码如下:

this.removeChild( spr );

执行删除操作类似于添加显示对象,将删除的显示对象作为参数传递给 removeChild 方法。 例子中spr是要删除的展示对象,this是spr的parent。

注意

显示对象独立于显示列表

显示对象独立于显示列表,尽管显示对象经常在运行时添加到显示列表或从显示列表中删除。 简单解释:在创建展示对象Sprite时,该对象有自己的坐标属性、旋转角度属性等,这些属性都是展示对象独立拥有的。 一旦将显示对象添加到显示列表中,Egret 将根据显示对象的状态进行显示。

这些状态在用户从显示列表中删除显示对象后仍然存在。 从显示列表中删除显示对象时,该对象不会在内存中销毁。 只是不要让显示对象参与渲染。

通过一段代码观察容器中显示对象的运行和状态变化:

//创建了一个类型为Sprite的显示对象
var spr:egret.Sprite = new egret.Sprite();
spr.graphics.beginFill( 0x00ff00 );
spr.graphics.drawRect(0, 0, 100, 100);
spr.graphics.endFill();
//该对象存在,被添加到显示列表中,在画面中显示
this.addChild( spr );
//该对象存在,但已被移除显示列表,画面上不显示
this.removeChild( spr );
//该对象存在,驻于内存中