【问题标题】:how to remove parent movieclip from child movieclip ain actionscript 3?如何从动作脚本 3 中的子影片剪辑中删除父影片剪辑?
【发布时间】:2011-07-13 22:55:22
【问题描述】:

下面显示了如何在影片剪辑中添加子项。
ebd.target.addChild(info_grd);

movieclip info_grd中有一个名为my_btn的按钮。我想删除movieclip info_grd.parent

【问题讨论】:

    标签: flash actionscript-3 actionscript


    【解决方案1】:

    代码类似于:

    delete_btn.addEventListener(MouseEvent.CLICK , del);
    
    function del(e:MouseEvent)
    {
        this.parent.removeChildAt(0);
    }
    

    我在这里做的是从库中添加一个影片剪辑并向其中添加一个子级,当我单击删除时,它将删除父级。

    var mm:mm1 = new mm1();
    //Adding it to stage
    addChild(mm);
    
    var m2:mm2 = new mm2();
    //adding the child to mm
    mm.addChild(m2);
    

    【讨论】:

    【解决方案2】:

    Amir 的代码假定只有一个孩子,因此当您添加更多孩子时将无法工作。

    此代码将执行正确的行为:

    deleteButton.addEventListener(MouseEvent.CLICK , removeFromParent);
    
    function removeFromParent(event:MouseEvent)
    {
        var child:DisplayObject = event.currentTarget as DisplayObject;
        var parent:DisplayObjectContainer = child.parent;
    
        parent.removeChild(child);
    }
    

    【讨论】:

    • 不行..我试过这个event.target.parent.parent.removeChild(event.target.parent.parent);.或者有什么方便的方法
    • 在处理鼠标事件时不要使用event.target,大多数时候它不是你所期望的。此外,您正试图从自身中删除一个项目,这是不合逻辑的。
    • 我相信您的代码假定 deleteButton 是 @Akhil 试图删除的 MovieClip。但我相信他们正试图删除 info_grd 的父级。
    • @Akhil 您应该检查一下父母是否确实存在,但尝试类似 event.currentTarget .parent.parent.removeChild(event.currentTarget .parent);