as3创建和删除子项

时间:2012-10-24 07:58:41

标签: actionscript-3

我想在按下按钮时创建它创建一个孩子,然后当孩子被击中时删除孩子....这可以工作但是当我再次点击按钮时,孩子不再被创建

我该怎么做?这是我的代码:

var bikeride:MovieClip = new ridingbike();
ridinb.addEventListener(MouseEvent.CLICK, openbike); 
function openbike(evt:MouseEvent):void { 

addChild(bikeride);
} 


bikeride.addEventListener(MouseEvent.CLICK, closebike); 
function closebike(evt:MouseEvent):void { 
    bikeride.removeChildAt(0);
}  

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容删除孩子:

removeChild(bikeride);;

如果您不存储bikeride实例,则可以执行此操作:

function closebike(evt:MouseEvent):void { 
    var bike:DisplayObject = DisplayObject(evt.target);
    bike.parent.removeChild(bike);
}

答案 1 :(得分:1)

添加到Florent的答案中,您可能还想删除事件侦听器,并在尝试使用它之前检查bikeride是否有父级。这可以避免空对象引用错误并确保bikeride被垃圾收集(从内存中删除,释放资源)。

bikeride.addEventListener(MouseEvent.CLICK, closebike); 

function closebike(evt:MouseEvent):void
{
    if(bikeride.parent)
    {
        bikeride.parent.removeChild(bikeride);
    }

    bikeride.removeEventListener(MouseEvent.CLICK, closebike);
}

如果您期望对象被正确“删除”,那么删除事件侦听器非常重要。