2013-06-12 63 views
0

Im在移除舞臺上的實例時遇到問題。移除舞臺上的所有實例as3

我不斷收到我按一下按鈕2次後

「提供的DisplayObject必須是調用的孩子」

有人可以幫我這個錯誤?

package src 
{ 
import flash.display.MovieClip; 
import flash.display.Stage; 
import flash.events.Event; 
import flash.events.MouseEvent; 

public class Main extends MovieClip 
{ 
    var positionY:Number = 80; 
    var positionX:Number = 0; 
    var motion:MovieClip; 
    var fCombo:Array = new Array(); 
    var n:Number; 

public function Main() 
{ 
    generate.addEventListener(MouseEvent.MOUSE_UP, loop); 
    generate.addEventListener(MouseEvent.MOUSE_DOWN, remove); 
    n = Number(inputText.text); 
} 
function loop(me:MouseEvent):void 
{ 
    var combo:Array = [Punch, Kick, Knee, Elbow]; 
    n = Number(inputText.text); 
    for(var i:Number = 0;i < n;i++) 
     { 
     motion = new combo[randomNumber(4)](); 
     fCombo.push(motion); 
     motion.y = positionY; 
     motion.x = positionX; 
     positionX += 100; 
     addChild(motion); 
      if (i == 4 || i == 9 || i == 14) 
       { 
        positionY += 40; 
        positionX = 0; 
       } 
     } 
} 
function remove(me:MouseEvent):void 
{ 
    for (var j:Number = 0; j < n; j++) 
    { 
     removeChild(fCombo[j]);//error 
    } 
    positionY = 80; 
    positionX = 0; 
} 

function randomNumber(max:Number):Number 
    { 
    return(Math.floor(Math.random() * max)); 
    } 
} 

}

+0

removeChild(fCombo [j]); // error'中的'j'從哪裏來?它似乎沒有被初始化。 – package

+0

你究竟想要做什麼?從顯示器中刪除最後添加的組合嗎?從顯示中刪除當前點擊的組合嗎? – package

+0

opps,編輯它。 –

回答

1

您添加您創建到陣列的新的對象,然後使用該將其刪除。但是你忘了創建一個新列表或從舊列表中刪除對象。所以,當時間到了你想要刪除已經被刪除的對象的列表上。

您可以通過多種方式解決這個問題,一個是去除你的循環從舞臺和數組對象:

function remove(me:MouseEvent):void 
{ 
    while(fCombo.length) 
    { 
     removeChild(fCombo.pop()); 
    } 
    positionY = 80; 
    positionX = 0; 
} 
0

targetDisplayObject.parent.removeChild(targetDisplayObject);假設父項不爲null,這個技巧是否成立?