中易网

AS3如何清空所有代码生成的元件而不会清除原来场景固有的元件?

答案:2  悬赏:80  
解决时间 2021-04-29 01:15
  • 提问者网友:妖精ξ也會哭
  • 2021-04-28 02:36
例如场景原本就有一个元件,然后通过代码addChild生成若干个元件,那如何在保留原场景元件的情况下把所有生成的元件删除。
PS,生成的元件不一定是同一个元件。
最佳答案
  • 二级知识专家网友:飘零作归宿
  • 2021-04-28 02:54
关键的一点是在addChild之前要先获取舞台上原有的DisplayObject 数量。
例如:在舞台上添加2个Button组件,分别命名为:add_btn、clean_btn,库里面有个名称为mc3的影片剪辑类,那么可以写代码如下:
import flash.display.MovieClip;
import flash.events.MouseEvent;
var oriNum:int = this.numChildren;
add_btn.label = "添加对象";
clean_btn.label = "清除对象";
add_btn.addEventListener(MouseEvent.CLICK, addObj);
clean_btn.addEventListener(MouseEvent.CLICK, cleanObj);
function addObj(evt:MouseEvent):void{
var newObj:MovieClip = new mc3();
newObj.x = Math.random()*stage.width;
newObj.y = Math.random()*stage.height;
addChild(newObj);
}
function cleanObj(evt:MouseEvent):void{
while (this.numChildren>oriNum){
removeChildAt(oriNum);
}
}

需要源文件的话,可以做一个给你,留给邮箱地址。
全部回答
  • 1楼网友:苦柚恕我颓废
  • 2021-04-28 03:43
你中以试试下面的代码,希望能给你解决问题第一个for循环,是添加10个AS链接为car库元件然后放进数组C,第二个for循环是删除在数组C里的所有显示列表 var C:Array=new Array(); var Car:car; for (var i:uint=0; i<10; i++) { Car=new car(); Car.x = i * 45 + 50; Car.y = 100; addChild(Car); C.push(Car); } trace(C); for (var j:int=0; j<C.length; j++) { removeChild(C[j])} trace(C);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息