2012-10-24 97 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); 
} 

移除事件偵聽器,如果你希望你的對象,以得到正確「刪除」這是非常重要的。