在AS3中我们删除一个容器的子项通常使用 removeChildAt(i:int)这个方法,当我们想要完成清空容器的功能时,通常我们都会使用循环实现。务必要注意的是:如果我们删除一个子项,Container 中该子项之上的任何显示对象的索引位置都减去 1,也就是说AS3中会自动调整所有的子对象的深度,不能跨深度。

下面我会提供几种解决方案:

1.实现正序删除:

 var numChild:int = this.panel.numChildren;
    while(this.panel.numChildren>=1){
     this.panel.removeChildAt(0)

    }

2.实现逆序删除:

var numChild:int =this.panel.numChildren;
     for(var i:int=numChild-1;i>=0;i--){
      this.panel.removeChildAt(i);
     }

3.实现逐个删除的动画效果:

this.panel.addEventListener(Event.ENTER_FRAME,clear_graphics);

    private function clear_graphics(evt:Event):void { 
      if (this.panel.numChildren==0) {
       this.panel.removeEventListener(Event.ENTER_FRAME,clear_graphics);
       }
       else{
       this.panel.removeChildAt(0);
       }
     }

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐