2011-11-20 70 views
2

我在AS3和flex4上玩動畫,而且我遇到了問題。我的應用程序是一個遊戲板(如棋盤),其中每個字段都是添加到某個位置的邊框容器。as3:製作動畫

此外,我正在添加一個子元素(形狀),鼠標點擊此容器。我想要實現的是能夠將形狀從一個領域平滑地移動到另一個領域。但看起來這種形狀落在相鄰區域的這種方式http://screencast.com/t/iZ3DCdobs

我相信這是因爲形狀是特定的邊界容器的子項,並使其在所有其他容器中可見,我需要以某種方式使用層....

,如果任何人都可以我會很高興建議解決方案

回答

1

是的,你是對的。您應該將可移動對象添加到不同的圖層。 由於AS中沒有典型的圖層,因此您可以嘗試將一個精靈和任何其他對象中的字段拖放到另一個對象上,而不是將它們放在彼此上,以便在您移動對象時不會拖到其他對象之後對象。

如果你將兩個精靈放在同一個位置,你仍然會在可移動的物體和場之間有準確的x,y位置。

1

你有兩個選擇:

第一個是有不同的層爲您的DisplayObject:作爲一個例子,在底層將持有的所有板和上層將持有所有的作品。

第二個選項是用swapChildren(),swapChildrenAt()setChildIndex()操縱對象的索引。所以要把一個MovieClip帶到最頂端,你可以做MovieClip(parent).setChildIndex(this, 0);

0

如果情況是總是形狀對象被隱藏在下一個(右側)網格容器後面,我建議你創建相反的網格。

假設您正在創建一個國際象棋網格。那是一個8x8的網格。通常情況下,您可以使用2 for循環創建網格,從0到8循環,比如說第一個網格的x和y點從0,0開始並繼續到結束。我建議你做的是從8,8到0,0創建。

Flash中的顯示對象根據其子索引相互堆疊在一起。

例如:如果您創建兩個對象。矩形和圓形如下

var rect:Rectangle = new Rectangle(); 
this.addChild(rect); 
var circ:Circle = new Circle(); 
this.addChild(circ); 

圓圈將永遠是矩形的頂部在這種情況下,因爲是圓矩形顯示列表後添加。 因此,如果您反轉網格的創建順序,則右側的網格單元格將首先添加到顯示列表中,因此左側的網格單元格將始終位於右側的網格單元格之上。因此,您所面臨的問題不會發生。