AS3如何移除容器下所有子显示对象
as3开发中,当需要对某些显示对象重新添加的时候,需要移除原来的显示对象,但有时候会出现移除指定显示对象子元素的时候为什么只移除了一半?请认真阅读下文,你将会豁然开朗。
下列代码先向mainPanel中添加5个显示对象。
var mainPanel:Sprite = new Sprite();
var s1:Sprite = new Sprite();
var s2:Sprite = new Sprite();
var s3:Sprite = new Sprite();
var s4:Sprite = new Sprite();
var s5:Sprite = new Sprite();
mainPanel.addChild(s1);
mainPanel.addChild(s2);
mainPanel.addChild(s3);
mainPanel.addChild(s4);
mainPanel.addChild(s5);
addChild(mainPanel);
下面我们做删除操作:
for(var i:int = 0; i < mainPanel.numChildren; i++) {
    mainPanel.removeChildAt(0);
}
trace(mainPanel.numChildren);
我们将看到最后输出2,说明还有2个显示对象没有删除,为什么?
我们试着做如下修改:
for(var i:int = 0; i < mainPanel.numChildren;) {
    mainPanel.removeChildAt(0);
}
trace(mainPanel.numChildren);
现在输出是0,说明删除完成了,为什么会这样?原来当进入下一次循环的时候mainPanel.numChildren将重新计算,开始是5;第二次将变成4,那时i=1;第三次变成3,i=2;……以此类推你就知道答案了。
为了简便,你可以把什么的代码改成如下格式:
while(mainPanel.numChildren) {
    mainPanel.removeChildAt(0);
}
trace(mainPanel.numChildren);
- 默认分类(20)
 - J2EE(25)
 - Java(56)
 - PHP(55)
 - SEO(10)
 - 网页设计(20)
 - 网站建设(37)
 - 数据库(7)
 - JavaScript(17)
 - JQuery(6)
 - MySQL(20)
 - SQL Server(6)
 - Access(1)
 - Oracle(6)
 - office(6)
 - Dreamweaver(4)
 - Photoshop(12)
 - Flash(9)
 - Fireworks(13)
 - CSS(14)
 - HTML(4)
 - .NET(7)
 - ASP(2)
 - DB2(1)
 - Ajax(2)
 - Linux(12)
 - Struts(7)
 - Hibernate(8)
 - Spring(2)
 - Jsp(22)
 - Asp(8)
 - C#(3)
 - C++(1)
 - 网络安全(5)
 - 软件工程(7)
 - XML(1)
 - English(2)
 - 计算机等级考试(2)
 - 计算机病毒(4)
 - 个人日志(76)
 - 互联网(15)
 - ActionScript(10)
 - Android(3)
 - 数据结构与算法(1)
 - 游戏策略(3)
 - 美文翻译(2)
 - 编程开发(19)
 - 计算机应用(4)
 - 计算机(10)
 - Unity3d(6)
 - 其他(1)
 - egret(1)