0

我想在点击按钮时创建一个孩子,然后当点击孩子时,它会删除孩子......这可行,但是当我再次点击按钮时,孩子不会再次被创建。

我怎样才能做到这一点?这是我的代码:

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);
}  
4

2 回答 2

2

您可以使用以下方法删除孩子:

removeChild(bikeride);;

如果你不存储bikeride实例,你可以这样做:

function closebike(evt:MouseEvent):void { 
    var bike:DisplayObject = DisplayObject(evt.target);
    bike.parent.removeChild(bike);
}
于 2012-10-24T08:01:16.073 回答
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);
}

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

于 2012-10-24T08:04:33.623 回答