Actionscript 3 as3 removeChild-我无法针对特定的子级

Actionscript 3 as3 removeChild-我无法针对特定的子级,actionscript-3,flash,Actionscript 3,Flash,我仍在试图了解AS3,但不知道如何在我的项目中针对一些特定的儿童并将其删除。。。我确信在某个地方的“基本AS3”一书的第1页上有一个简单的解决方案,但我无法解决它 作为fillDriveway函数的一部分,我正在尝试删除addNewPoint函数中创建的红线(或者只给它们一个alpha值0) 如果你需要,我可以给你一个源文件的链接 提前非常感谢 这是我可怕的代码: import flash.display.* pic.addEventListener(MouseEvent.CLICK,

我仍在试图了解AS3,但不知道如何在我的项目中针对一些特定的儿童并将其删除。。。我确信在某个地方的“基本AS3”一书的第1页上有一个简单的解决方案,但我无法解决它

作为fillDriveway函数的一部分,我正在尝试删除addNewPoint函数中创建的红线(或者只给它们一个alpha值0)

如果你需要,我可以给你一个源文件的链接

提前非常感谢

这是我可怕的代码:

    import flash.display.*

pic.addEventListener(MouseEvent.CLICK,addNewPoint);

var n:Number = 0;

function addNewPoint(e:MouseEvent):void {
    n++;
    pointNo.text = String(n);
    var nextPoint:MovieClip = new newPoint();
    addChild(nextPoint);
    nextPoint.name = "mc"+pointNo.text;
    nextPoint.x = e.target.mouseX;
    nextPoint.y = e.target.mouseY;

    var joinPoints:MovieClip = new MovieClip();
    this.addChild(joinPoints);
    joinPoints.graphics.lineStyle(0.5,0xFF0000);
    joinPoints.graphics.moveTo(this.getChildByName("mc1").x, this.getChildByName("mc1").y);
    for(var i:int=2; i<=n; ++i){
        joinPoints.graphics.lineTo(this.getChildByName("mc"+i).x, this.getChildByName("mc"+i).y);
    }
}

pic.addEventListener(MouseEvent.CLICK, addNewPoint);

function fillDriveway(eventObject:MouseEvent) {
    var joinPoints:MovieClip = new MovieClip();
    this.addChild(joinPoints);
    joinPoints.graphics.beginFill(0xFFFFFF, 0.7);
    joinPoints.graphics.moveTo(this.getChildByName("mc1").x, this.getChildByName("mc1").y);
    for(var m:int=2; m<=n; ++m){
        joinPoints.graphics.lineTo(this.getChildByName("mc"+m).x, this.getChildByName("mc"+m).y);
    }
    joinPoints.name = "driveshape";
    filledDrive.text = "filled";
}

function undoit(eventObject:MouseEvent) {
    if(n > 0) {
        if(filledDrive.text.indexOf("filled") != -1) {
            this.removeChild(this.getChildAt(this.numChildren -1));
            filledDrive.text = "";
            }else{
            this.removeChild(this.getChildAt(this.numChildren -1));
            this.removeChild(this.getChildAt(this.numChildren -1));
            n--;
            pointNo.text = String(n);
        }
    }
}

undo.addEventListener(MouseEvent.CLICK, undoit);

function maskDrive(eventObject:MouseEvent) {
    if(filledDrive.text.indexOf("filled") != -1) {
        var finishA:MovieClip = new finishMC();
        this.addChild(finishA);
        finishA.x = 310;
        finishA.y = 100;
        finishA.mask = getChildByName("driveshape");
        finishA.gotoAndPlay(2);
    }
}

//BTN Actions
function btn1over(myEvent:MouseEvent) {
    btn1.gotoAndPlay(2);
}
function btn1out(myEvent:MouseEvent) {
    btn1.gotoAndPlay(11);
}
function btn2over(myEvent:MouseEvent) {
    btn2.gotoAndPlay(2);
}
function btn2out(myEvent:MouseEvent) {
    btn2.gotoAndPlay(11);
}
function btn3over(myEvent:MouseEvent) {
    btn3.gotoAndPlay(2);
}
function btn3out(myEvent:MouseEvent) {
    btn3.gotoAndPlay(11);
}

//BTN Calls
btn1.addEventListener(MouseEvent.CLICK, fillDriveway);
btn1.addEventListener(MouseEvent.ROLL_OVER, btn1over);
btn1.addEventListener(MouseEvent.ROLL_OUT, btn1out);
btn1.buttonMode = true;
btn1.useHandCursor = true;
btn2.addEventListener(MouseEvent.CLICK, maskDrive);
btn2.addEventListener(MouseEvent.ROLL_OVER, btn2over);
btn2.addEventListener(MouseEvent.ROLL_OUT, btn2out);
btn2.buttonMode = true;
btn2.useHandCursor = true;
btn3.buttonMode = true;
btn3.useHandCursor = true;
btn3.addEventListener(MouseEvent.ROLL_OVER, btn3over);
btn3.addEventListener(MouseEvent.ROLL_OUT, btn3out);
导入flash.display*
pic.addEventListener(MouseEvent.CLICK,addNewPoint);
变量n:数值=0;
函数addNewPoint(e:MouseEvent):void{
n++;
pointNo.text=字符串(n);
var nextPoint:MovieClip=newnewpoint();
addChild(nextPoint);
nextPoint.name=“mc”+点编号文本;
nextPoint.x=e.target.mouseX;
nextPoint.y=e.target.mouseY;
var joinPoints:MovieClip=新的MovieClip();
此.addChild(连接点);
连接点.图形.线型(0.5,0xFF0000);
joinPoints.graphics.moveTo(this.getChildByName(“mc1”).x,this.getChildByName(“mc1”).y);

对于(var i:int=2;i我认为您的问题是,每次创建新的joinPoints时,您都会覆盖指向前一个joinPoints实例的指针,因此您无法访问它。(这将导致内存泄漏)

每次创建joinPoints对象时,请将其添加到阵列:

joinPointsArray.push(joinPoints);
然后,fillDriveway函数可以访问您创建的所有连接点:

for (var i:int = 0; i < joinPointsArray.length, i++) {
joinPointsArray[i].alpha = 0;
}
for(变量i:int=0;i
您想做什么,会发生什么?您的代码很长,需要一些精力才能理解:)是的,很长很抱歉!addNewPoint函数在用户单击的位置添加一个mc,然后每次后续单击都会在该点添加另一个mc,并用红线将上一点连接到新点。然后fillDriveway函数填充绘制的此形状,以便我可以使用它来遮罩图像。但是当调用fillDriveway时,我会喜欢它首先删除所有的红线绘制(不是在这些点上的mcs虽然)…一个好的感谢crooksy88-我有另一个问题与这个项目有关,所以我现在将弹出它…欠你一个!