当前位置: 代码迷 >> 综合 >> Egret Engine(七):2D渲染-相对于容器的显示、添加与删除显示对象
  详细解决方案

Egret Engine(七):2D渲染-相对于容器的显示、添加与删除显示对象

热度:80   发布时间:2024-02-06 19:34:35.0

添加/删除对象

const spr: egret.Sprite = new egret.Sprite();
spr.graphics.beginFill(0x00ff00);
spr.graphics.drawRect(0, 0, 100, 100);
spr.graphics.endFill();
this.addChild(spr);spr.touchEnabled = true;
spr.addEventListener(egret.TouchEvent.TOUCH_BEGIN, onRemoveSpr, this);function onRemoveSpr(e) {// this.removeChild(spr);/*** 判断它是否拥有父级* 如有一按钮控制删除spr,第一次删除能够删除spr* 第二次点击时无法找到spr父级,故报错* 使用以下判断可以效避免多次元素是后报错*/if (spr.parent) {spr.parent.removeChild(spr);}}

不同容器添加同一对象

不同容器添加同一对象

/*** 同一个显示对象无论被代码加入显示列表多少次,在屏幕上只绘制一次。* 如果一个显示对象A被添加到了B这个容器中,然后A又被添加到了C容器中。* 那么在第二次执行 C.addChild(A) 的时候,A自动的从B容器中删除,然后添加到C容器中。*/
const A: egret.Sprite = new egret.Sprite();
A.graphics.beginFill(0x0000ff);
A.graphics.drawRect(0, 0, 100, 100);
A.graphics.endFill();
A.x = 50;
A.y = 50;
const B: egret.Sprite = new egret.Sprite();
B.graphics.beginFill(0xff0000);
B.graphics.drawRect(0, 0, 300, 300);
B.graphics.endFill();
this.addChild(B);
const C: egret.Sprite = new egret.Sprite();
C.graphics.beginFill(0x00ff00);
C.graphics.drawRect(0, 0, 200, 200);
C.graphics.endFill();
C.x = 400;
this.addChild(C);
B.addChild(A);
C.addChild(A);
  相关解决方案