2013-10-09 64 views
1

我試圖刪除一個子動畫片段,但它總是出錯。我已經嘗試過不同的方式,沒有任何作用刪除子AS3

這是我的打印屏幕。我想要刪除的movieclip是movieclip playerPaddle中的movieclip1。

請任何幫助。

我的代碼刪除:

if(playerPaddle.movieclip1.hitTestObject(ball)){ 
         playerPaddle.movieclip1.removeChild(movieclip1); 

} 

錯誤消息: 對話框說關閉所有或繼續 - 無法converto movieclip1 $到flash.display.DisplayObject

+0

你確定'movieclip1'是一個MovieClip? – Marty

回答

1

如果我理解正確的,你試圖從playerPaddle對象中刪除movieclip1。

要做到這一點,你必須調用:

if(playerPaddle.movieclip1.hitTestObject(ball)){ 
        playerPaddle.removeChild(playerPaddle.movieclip1); 

}

,這是因爲playerPaddle是movieclip1的父對象,因此,調用父對象上removeChild之會很好地工作。

+0

右鍵 - 下面的人是正確的。我的解決方案有小錯誤。解決movieclip1必須用父母的名字來完成。除非您通過名稱爲movieclip1的變量聲明變量,該變量持有對嵌套的動畫片段的引用:)。 – Szczups

1

儘管庫巴的答案帶來了您提供的代碼的問題,但我認爲您現在面臨的問題是,作爲參數傳遞到playerPaddle.movieclip1.removeChild(...)movieclip1對象不是movieclip1。如果我不得不冒險猜測,它很可能是空的。

你可以嘗試:

if(playerPaddle.movieclip1.hitTestObject(ball)) 
{ 
    playerPaddle.removeChild(playerPaddle.movieclip1); 
} 

(我已經包括由庫巴的建議太)。

+0

這是正確的答案。這是一個範圍問題。 – Pier

0

以下可以幫助你

if(this.parent) this.parent.removeChild(this); 

您可以用適當的孩子取代this和有同樣的結果。如:

if(ball.parent) ball.parent.removeChild(ball); 
0

庫巴幾乎是正確的,但movieclip1將不在範圍內。您仍然需要指向屬於playerPaddle的對象movieclip1。

if(playerPaddle.movieclip1.hitTestObject(ball)) 
{ 
    playerPaddle.removeChild(playerPaddle.movieclip1); 
} 
0

如果您刪除孩子,您還需要刪除正在監聽孩子的EventListener。如果您刪除了子對象,並且事件偵聽器仍在檢查它,則會出現錯誤。你可以在這樣的檢查語句嵌套函數

if(playerPaddle) 
    { 
     if(playerPaddle.movieclip1.hitTestObject(ball)) 
     { 
      playerPaddle.removeChild(playerPaddle.movieclip1); 
     } 
    }