2014-12-01 76 views
0
function addEffect() 
{ 
var thisEffect = new MyEffect; //Simple movieClip 
addChild(thisEffect); 
effectArray[0] = thisEffect; 
} 

以上工作正常。後來我刪除它...下面的工作也很好。從Array刪除兒童作品...有時

function removeEffect() 
{ 
    if(effectArray[0] != null) 
    { 
    removeChild(effectArray[0]); 
    } 
} 

然而,當我再次使用的功能,somtimes下翻,有時兩圈後,我得到: 錯誤#2025:提供的DisplayObject必須是調用者的子。 奇怪的是,我使用相同的技術來添加和刪除其他動畫片段,並且對於其他所有內容都可以正常工作。我沒有引用effectArray或其中的任何東西,除了這兩個函數之外,它們都在Main.as中。

+0

當我做了一些跟蹤語句,我發現,即使它從舞臺上刪除的對象,該對象停留在陣列內部,當我試圖重複它,它試圖消除同一剪輯再次,這已經不在舞臺上了... effectArray = []解決了這個問題。 – randyHurd 2014-12-01 20:22:41

回答

2

這很正常。 將myEffect添加到數組時,只有對myEffect的引用存儲在數組中。 而當您嘗試通過數組到達該對象時,一切正常,並且引用myEffect中的數組指向每次正確對象。

但是,每次都不正確的是,是否有一個對象參考點的位置。如果它已被刪除,它不能再作爲目標對象的子項,所以你會得到這個錯誤。

你在做什麼removeEffect功能是檢查引用是否存在,而不是對象。如果你不從數組中移除它,那麼引用總是存在的。刪除對象後,還要刪除參考。一切都會正常工作。

function removeEffect() 
{ 
    if(effectArray[0] != null) 
    { 
    removeChild(effectArray[0]); 
    effectArray[0] = null; 
    } 
} 
+0

謝謝。這清除了我的一切。 – randyHurd 2014-12-01 20:49:41