2012-10-24 59 views
0

我想让它当一个按钮被击中时它创建一个孩子,然后当孩子被击中它删除孩子....这个工程,但然后当我再次单击按钮时,孩子doesn不会再被创造。as3创建和删除的孩子

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

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

可以使用删除子:

removeChild(bikeride);; 

如果没有存储bikeride情况下,你可以这样做:

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

这样做!谢谢。如果你不介意我问,我使用的方法有什么问题? – Butterflycode

+0

** @蝴蝶编码**您正尝试移除添加到“bikeride”的第一个孩子。 – Florent

1

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

bikeride.addEventListener(MouseEvent.CLICK, closebike); 

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

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

移除事件侦听器,如果你希望你的对象,以得到正确“删除”这是非常重要的。