2012-07-01 33 views
1

我正在使用Adobe AIR 3.3在Flash CS6中工作,並且在將它們添加到舞臺後刪除影片剪輯時遇到問題。這裏是我的代碼:as3刪除循環中的子項

for(var i = 0; i<starCount; i++) 
{ 
    star = new newStar(); 
    choiceBoard.addChild(star); 
    star.x = 195; 
    if(i>=1) 
    { 
     star.x = 195 + 90*i; 
    } 
    star.y = 597 
} 

這是我創建了一個功能動態地將星形電影剪輯的一部分......它增加了一個影片剪輯,增加之間的空間,增加了下一個影片剪輯等哪有我創建後刪除所有明星電影剪輯?

我已經試過:

for(var i = 0; i<starCount; i++) 
{ 
    if(contains(star)) 
    { 
     choiceBoard.removeChild(star); 
     trace("removed star"); 
    } 
} 

但這只是刪除一個明星,無論什麼 「歷史starcount」 設置爲。提前致謝。

回答

2
private var stars:Array=[]; 
for(var i = 0; i<starCount; i++) 
{ 
    star = new newStar(); 
    stars.push(star); 
    choiceBoard.addChild(star); 
    star.x = 195 + 90*i; 
    star.y = 597 
} 

然後嘗試

for(var i = 0; i<stars.length; i++) 
{ 
    choiceBoard.removeChild(stars[i]); 
    trace("removed star"); 
} 
+0

固體!感謝那 – user1129107

0

都是明星,他們只是choiceBoard的孩子嗎?如果是這樣,你可以刪除所有的孩子,像這樣:

choiceBoard.removeChildren(); 

或者,可以將所有的星星添加到一個數組,然後通過數組循環將其刪除:

var starArray:Array = []; 

//... 

for(var i = 0; i<starCount; i++) 
{ 
    star = new newStar(); 
    //put the star into the array 
    starArray.push(star); 
    choiceBoard.addChild(star); 
    star.x = 195; 
    if(i>=1) 
    { 
     star.x = 195 + 90*i; 
    } 
    star.y = 597 
} 

再到刪除:

for(var i = 0; i<starArray.length; i++) 
{   
    //remove the star from the display 
    choiceBoard.removeChild(starArray[i]);  
    trace("removed star"); 
} 
//clear the array 
starArray = []; 
0

如果已經添加了所有的恆星到一個容器中(看起來像你有choiceBoard),並沒有什麼別的在容器要保持周圍,然後你可以通過這樣簡單(快速地)將它們刪除:

while(choiceBoard.numChildren) 
{ 
    choiceBoard.removeChildAt(0); 
}