2010-03-31 81 views
1

我正在構建一個遊戲,其中界面是要在屏幕上加載的第一個項目之一。聲音按鈕,暫停和所有位 -Actionscript中的Movieclip堆棧

在比賽期間 - 所有莊園的東西都動態添加並移除到舞臺上。因此,我的界面落後於我的遊戲場景。

如何確保動畫片段始終保持在最佳狀態?

我可以重寫我的文檔類的addChild,並且每次添加新的子項時,我都會將界面重新封裝到頂部?

回答

1

您可以使用setChildIndex重新排列已包含在MovieClip或Sprite中的對象。舉例來說,如果你有一個名爲容器一個對象,其中包含一個redBall,藍色圓球等諸多球對象,可以使用下列步驟來確保redBall是一切的背後:

container.setChildIndex(redBall, 0); 

同樣可以使確保藍色圓球將顯示盈一切使用:

container.setChildIndex(blueBall, container.numChildren-1); 

addChildAt將整理出來你添加的孩子直接進入他們的正確位置和setChildIndex將讓你重新定位對象已經放置。希望有所幫助。

得不

+0

Sweet。That's uber helpful。 – Glycerine 2010-03-31 18:23:36

+0

沒問題,很高興幫助:) – debu 2010-03-31 18:49:34

1

查看addChildAt,它允許您指定新對象應該添加的索引。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html#addChildAt%28%29

一個好的策略是保持在一個父雪碧/ MovieClip的所有界面元素,而在另一場比賽的所有資產。 (使用頂部的接口)

+0

不錯的一個,我看過,我可以看到它是如何工作的,但我不確定它是如何放在一起的。 – Glycerine 2010-03-31 18:28:30

+0

+1關於在一個父Sprite/MovieClip中保留所有界面元素的註釋「,這是正確的方法。 – aaaidan 2010-04-01 00:04:59

0

隨着你的傢伙建議我做了這個,很明顯,如果你在屏幕上已經的addChild一個對象,它只是reindex'd頂端。這看起來好嗎?

private var topLevelChildrenArray:Array = []; 

public function addTopLevelChild(child:DisplayObject):DisplayObject 
{ 
    topLevelChildrenArray.push(child) 
    return this.addChildAt(child, this.numChildren - 1); 
} 

override public function addChild(child:DisplayObject):DisplayObject 
{ 
    this.addChildAt(child, this.numChildren); 

    for each(var topChild:DisplayObject in topLevelChildrenArray) 
    { 
     super.addChild(topChild); 
    } 

    return child 
}