2011-05-11 84 views
0

我正在嘗試創建一種控制動畫片段深度的方法,該動畫片段顯示在另一個之上,以便我可以將動畫片段的深度設置爲任何數字,並且它們將以更高的值顯示較低的值。AS3自定義深度控制

我在想創建MovieClipDepth類擴展影片剪輯與添加的屬性深度,和延伸的DisplayObjectContainer所有對象將被放置的內一個容器類

Container類將重寫的addChild方法更新的子顯示順序當兒童被添加。

What I need help with is how do I reorder the children according to their depth value?

+1

的addChild()方法從一個親本移動兒童至另一如果它已經在顯示列表中。還有swapChildren(),swapChildrenAt()和setChildIndex()方法可以幫助你管理這個。 – philipp 2011-05-11 05:46:41

回答

2

正如你可以閱讀你的問題下面的評論,有幾種方法。

但實際上,你問「設置動畫片段的深度爲」的任何一個都不能在AS3中完成。如果我是正確的,你可以在AS2做到這一點,所以...

...又是怎麼回事......

_root.createEmptyMovieClip("mc", -1000); 

_root.createEmptyMovieClip("mc1", 1); 
_root.createEmptyMovieClip("mc2", 10); 

工作,但不在AS3工作。在AS3中,深度從0開始,並且不能強制DisplayObject處於從零開始不連續的級別。

所以在容器3點的movieclip深處只可能與這些值:0,1,2

深度不能例如一個負數。

現在,如果你想建立一個自定義的深度管理器,你可以這樣做,但你必須考慮這些事實。

所以說,你可以創建虛擬深度。

所以我想你可以重寫addChildAt方法。此刻,如果你給一個錯誤的號碼:陰性,或高於兒童人數,閃光燈會給後面的錯誤:

RangeError: Error #2006: The supplied index is out of bounds. 

所以mc.addChildAt(newchild, -1000)給出了一個arror。

但重寫該方法,你可以製作一個技巧,所以你可以將深度存儲在一個數組中。您可以存儲任何數字,然後轉換該順序以滿足AS3的需求。

就像將深度與添加的子元素配對一樣,按深度對數組進行排序,然後根據順序管理子元素。

如果您有更多的問題,請隨時提問,希望這能讓您更接近解決方案。