2013-04-25 52 views
0

我試圖刪除MovieClip,但它說參數子項必須爲非null。FLASH/AS3:刪除孩子時出錯。參數子項必須爲非零

這我的腳本:

,使其在舞臺上,我使用:

function sayam (e:MouseEvent):void{ 
    nilai = 8; 
    if(nilai == temp) { 
    var ssAyam:ayam_mc = new ayam_mc 
    stage.addChild(ssAyam); 
    ssAyam.x = 350.0; 
    ssAyam.y = 330.0; 
    ssAyam.width = 170.0; 
    ssAyam.height = 170.0; 
    ssAyam.instanceName = "Ayam"; 
    arnam.push("Ayam"); 
    trace("arnam" +arnam); 
    trace(ssAyam.instanceName); 
    jual = jual + 4000; 
    temp = val[len-(len-len2)] 
    len2 = len2 + 1; 
    } else { 
      money = money - 4000; 

     } 

    } 

所以,我做了8個功能,使8部影片剪輯在舞臺上展示和他們推到陣列。 陣列是「arnam」。

,這是我刪除代碼:

function deleteBurger() { 
       for(var i:Number=arnam.length; i >= 0; i--){ 
         removeChild(arnam[i]); 
         arnam.splice(i,1); 
       } 
      } 

我跟蹤我的陣列,它不爲空。

有人可以幫我嗎?謝謝:)

回答

1

你不應該根據這個數組的長度來修改一個循環中的數組,這種行爲將是不可預知的。

for each(var child:Sprite in arnam){ 
    stage.removeChild(child); 
} 
arnam = []; 
+0

它說提供的DisplayObject必須是調用者的孩子。 – user2319113 2013-04-25 12:32:00

+0

也許你不在舞臺上,使用stage.removeChild – Kodiak 2013-04-25 12:47:49

+0

哇!有用!非常感謝你!我花了1周的時間! – user2319113 2013-04-25 14:34:51

0

試試這個

for(var i:int=arnam.length-1; i >= 0; i--){ 
         removeChild(arnam[i]); 
         arnam.splice(i,1); 

       } 
+0

錯誤已更改爲DisplayObject必須是子項如果調用者 – user2319113 2013-04-25 12:36:07

+0

在刪除arnam [i]之前,您可以嘗試跟蹤arnam [i] .parent以查看它已添加的位置(或如果):trace(「arnam [」) + i +「]。parent =」+ arnam [i] .parent); – moosefetcher 2013-04-25 14:24:45

2

我喜歡做這個零出數組和操縱成員我這樣做:

while(arnam.length) 
{ 
    removeChild(arnam.pop()); 
} 

現在,我會用的Vector影片剪輯,以強類型,而不是數組。並且還使用contains()來檢查MovieClip在嘗試刪除它之前是否還處於舞臺上:)

+0

這是一樣的。它表示提供的DisplayObject必須是調用者 – user2319113 2013-04-25 12:34:39

+0

的孩子,那麼您需要獲取MovieClip的父級並調用remove()。任何DisplayObject都有一個.parent屬性:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#parent – 2013-05-19 03:38:39

相關問題