2010-09-19 80 views
0

嘿,夥計們,我的網頁在閃存中出現問題。所以我創建了5個頁面,每個頁面都包含多個電影剪輯(文本,圖形,表單等)。但是有一個特定頁面包含通過自動生成的內容。精靈。如果我碰巧着陸在這個頁面上,精靈就會出現,但是當我轉換到另一個頁面時,它們仍然存在,除非精靈的東西(消失)。爲了讓我的頭髮在這一張上脫穎而出,我設法讓一些精靈移除,但仍有一些仍在出現。下面顯示了未被刪除的佈局;從舞臺上刪除精靈

var container:Sprite = new Sprite(); 

//loop places several "item" in this container sprite and a scroll bar 
var item:myItem = new myItem(); 
var sb:customScrollBar = new customScrollBar(); 

container.addChild(item); 
container.addChild(sb); 

所以我們現在這個頁面,生成容器和物品上,然後我點擊一個按鈕移動到說主頁和容器仍然保持在那裏。

這裏是我的嘗試:

removeChild(container); //nothing, this was called from another keyframe where the container was not generated from 
stage.removeChild(container); //nothing 

這裏有錯誤。 ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子項。

注* 我也有幾個按鈕,這些按鈕也是在下面的容器中生成的,當我運行removeChild(button1)時,它們工作,所以我不知道爲什麼容器不工作。

FLA(CS4) http://www.4shared.com/file/2swJjnNm/mevame.html

預覽 http://bodog-bonuses.com/mevame/

+1

如果您收到'Supplied DisplayObject must be a child ..'錯誤,則聽起來像容器不是舞臺的孩子。你可以用這個來檢查:if(stage.contains(container)){trace(「true」); }。看看你在運行時會發生什麼。 – debu 2010-09-19 19:56:58

+0

嗯不知道你可以做到這一點。我試過這個,它返回true。我一直在擺弄它,有時我會努力工作,然後當我嘗試再次做到這一點時失敗。 – 1337holiday 2010-09-19 20:40:48

+0

你知道這裏是一個鏈接的東西,所以你可以看到它。 HTTP://博多格-獎金。com/mevame /,如果你只瀏覽菜單上的鏈接,你會注意到它們都可以工作。如果你進入菜單標籤,然後點擊一個沙拉(盒),計算器的東西出現。現在這是自動生成的東西,注意如果你去其他任何頁面,它仍然停留在那裏。如果你去家裏,它會被刪除,但只有一次。 – 1337holiday 2010-09-19 20:47:59

回答

0

同樣的事情也發生在我身上這之前,我通過執行以下操作來解決。這取決於您創建的容器實例以及父容器是如何識別的。

 
var container:Sprite = new Sprite(); 
container.name = "container"; 

//------- later 
var child:DisplayObject = getChildByName("container"); 
removeChild(child); 

如果您需要刪除所有的孩子,你也可以做到這一點

 
while(this.numChildrem > 0) 
    this.removeChildAt(0); 
0

這很可能是由於這一事實,用時間軸動畫,任何給定的關鍵幀可以但包含一個對象,每個關鍵幀引起的操作列表,您會丟失上一個關鍵幀內容的範圍。因此,如果在跨越新的時間軸關鍵幀之前調用remove child,則可能可以成功調用容器上的removeChild。

否則,您可以利用Patrick的建議,它一定會在舞臺上找到對象並將其刪除,儘管它是從顯示列表中檢索對象的更低效方法之一。

1

,如果你遵循

//initialization 
var container:Sprite = new Sprite(); 

...... 
...... 
addChild(container); 

//------- later 
if(contains(container)) 
    removeChild(container); 

無需創建一個名稱,這是機制保障你不會得到一個參數錯誤2025的精靈或的DisplayObject添加到顯示列表。那麼你將不會得到一個y ArgumentError 2025。