2012-03-17 87 views
0

對,這裏是場景:我有4個對象,A,B,C和D.我想要的是C遮擋A,但不遮擋B.同樣,我想讓D遮掩B,但不是A.A和B可以以任何順序相互重疊,沒關係。換句話說,我想要的是一個對象(C)能夠覆蓋一個對象(A),但不能覆蓋另一個對象(B),即使它接觸到它也是如此。與D相同,即使與B接觸,也可以覆蓋B而不是A.問題是,我無法想到一個允許這樣的圖層配置:D將始終高於A和B,因此會使兩者都變得模糊。AS3 - 使對象模糊特定對象

我不期待任何人想出一些不可思議的聰明的配置,但我想知道是否有某種類型的ActionScript可以做到這一點。特別是,我希望A和B是動態TextFields,C和D是任何形狀的MovieClip(即不是矩形)。

希望這是可能的!

+0

你或許應該大家分享你試圖達到的帽子,也許人們想出了更好的解決方案...... – loxxy 2012-03-17 18:05:02

回答

2

您可以使用blitting,其中您實際上不是將項目添加到舞臺,而是使用copyPixels()或draw()繪製像素。如果你這樣做了,那麼你可以確定哪些部分的對象將被繪製。查看這篇博客文章,瞭解http://www.developria.com/2010/02/dealing-with-bitmapdata.html技術的概述。

+0

BitmapData.draw()看起來像我想要的。如果我這樣做,那麼我可以使用一個循環來刪除(即將alpha設置爲0)與我不希望文本顯示的位重疊的像素。 – puggsoy 2012-03-20 14:51:25

+0

你不會得到非常好的性能,試圖循環和重繪單個的像素。相反,繪製整個事物透明,然後繪製你想要的對象的部分。 – 2012-03-20 17:20:27

+0

啊,對,謝謝。因爲我會重複多次,這可能會很快,但我可能會希望獲得最佳性能。 – puggsoy 2012-03-20 18:01:46

2

您將它們添加到舞臺的順序決定了在什麼前面顯示的內容。基本上,無論最後添加的是什麼,最先添加的是底部。

如果您希望C覆蓋A而不是B和D覆蓋B而不是A,那麼您遇到了問題。想想如果所有四個重疊,會發生什麼。 C會試圖掩蓋A並讓B展現出來,而D將試圖掩蓋B並讓A展現出來。不可能。

+0

這正是我所說的。我明白分層,這就是爲什麼我問是否有ActionScript解決方案。重新解釋我的問題,然後說這是不可能的,這不是一個很好的幫助。 – puggsoy 2012-03-17 18:12:33

+0

+1。不可能,因爲它表明(沒有某種拆分對象C和D)。您需要重新考慮您的要求,至少您知道這是可能的,而不是可以幫助您用代碼進行轉換。 – 2012-03-18 05:20:57

0

假設我明白你想要什麼,使用parent /包含MovieClip的setChildIndex()函數。如果你所有的ABCD對象的載於一個MovieClip名叫parent_mc,你可以這樣做:

parent_mc.setChildIndex(a_mc, parent_mc.numChildren-1); // Throw "a_mc" on top 
parent_mc.setChildIndex(b_mc, parent_mc.numChildren-1); // Throw "b_mc" on top 

這wouold導致b_mc正對的a_mc頂部,等..

也chould扔東西就顯示列表的最底部:

parent_mc.setChildIndex(b_mc, 0); 

文檔瀏覽:DisplayObjectContainer.setChildIndex()