锚点操作
每个显示对象都包含一个锚点,锚点默认位于显示对象的左上角。
当设置一个显示对象的坐标位置时,会以锚点为参照改变显示对象的绘图位置。同时,锚点相对于显示对象的位置也是可以改变的。
修改锚点
shp.anchorOffsetX = 50;
shp.anchorOffsetY = 50;
本地坐标和舞台坐标
x 和 y 属性始终是指显示对象相对于其父显示对象坐标轴的 (0,0) 坐标的位置。因此,对于包含在 DisplayObjectContainer 实例内的 Shape 实例(如圆),如果将 Shape 对象的 x 和 y 属性设置为 0,会将圆放在 DisplayObjectContainer 的左上角,但该位置不一定是舞台的左上角。若要确定对象相对于全局舞台坐标的位置,可以使用任何显示对象的 globalToLocal() 方法将坐标从全局(相对于舞台)坐标转换为本地(相对于显示对象容器)坐标。
//把舞台左上角的坐标(0,0)转换为 container 内部的坐标
var targetPoint: egret.Point = container.globalToLocal(0,0);
//重新定位圆,可以看到圆形移到了屏幕的左上角
circle.x = targetPoint.x;
circle.y = targetPoint.y;
位置和平移
container.x = 17;
container.y = 212;
属性的操作
对显示对象操作属性,具体一些属性在“基本概念”文章
显示对象.属性=xxx;
//shp.width=100;宽度
//shp.alpha=1;透明度
添加对象
添加对象到显示列表:
在Egret中建立显示对象和渲染显示对象是两个过程。建立显示对象后,对象会处于内存中,但不会参与渲染过程,只有把显示对象放到显示列表后,显示对象才会参与渲染过程。如果想将某个显示对象从渲染过程中删除,只需要将其移除显示列表即可。
this.addChild( spr );
添加对象不只是添加到舞台类中,还可以添加到容器中:
sprcon1.addChild( spr );
注意:
同一个显示对象无论被代码加入显示列表多少次,在屏幕上只绘制一次。
如果一个显示对象A被添加到了B这个容器中,然后A又被添加到了C容器中。那么在第二次执行 C.addChild(A) 的时候,A自动的从B容器中删除,然后添加到C容器中。
删除显示对象
//容器对象.removeChild( 显示对象 );
this.removeChild( spr );
注意:
执行删除操作时,“显示对象”必须拥有父级。换句话说,被删除的显示对象必须存在于容器对象当中。
如果当前删除的显示对象不在容器对象之中,JavaScript控制台会报错:
Uncaught Error: [Fatal]child未被addChild到该parent:
避免这种问题的处理方法是:每次removeChild之前,对即将要被删除的显示对象做一次判断,判断它是否拥有父级。判断的代码如下:
if( spr.parent ) {
spr.parent.removeChild( spr );
}