2009-11-04 54 views
1

有沒有人有一個好的方法來管理actionscript 3項目中的顯示列表的建議?目前我正在構建一個應用程序,並跟蹤所有需要顯示並重新排序的模塊已變得笨拙。 我已經加載了swfs和實例化的類,這些類也加載在swfs,圖像和視頻中。我應該只參考舞臺上的一切嗎?我應該如何跟蹤顯示樹?我怎麼總是強制一個特定的模塊到樹的頂端?在actionscript 3應用程序中顯示列表管理

回答

1

我使用容器DisplayObject,並讓每個DisplayObject管理其直接的孩子(父母告訴孩子要做什麼)。通常你可以將你的顯示列表分成自然的「圖層」,可以放在自己的容器中。

這種方式主容器不必改變深度,所以你知道添加到舞臺上的最後一個容器將在最上面。

也要強制DisplayObject到顯示列表的頂部,只需使用addChild(即使它已被添加)。這會將其添加到列表的頂部。

+1

這似乎是一個很好的startegy,謝謝;-) – martin 2009-11-05 12:33:51

0

使用容器是最好的選擇。容器是你的朋友。

使用addChild()強制列表頂部的內容有效,但如果必須在代碼中執行5萬次以上操作,可能會非常困難,而且更重要的是,當您得到多個需要保留的內容時無論如何,頂上。

所以,我做的是我創造我的文檔類中的「優先深度棧」陣列,而我加我想要的一切「頂部」所有的時間,不管什麼,只要我做任何公然階段的工作,例如作爲一個主要的顯示對象的切換,我只是使用一個名爲「RunDepthStack」的方法,它遍歷數組並重新添加數組中的所有內容。

你甚至可以得到有關它極爲元和對象添加到數組,甚至沒有必要在舞臺上通過調用

object.parent.addChild(object); 

這將使你與一個不論其容器的管理優先的DisplayObject單一的超級方法...

現在,如果你有一個非常複雜的用戶界面,你將不得不更細粒化,但我不認爲這是你的問題。

+0

我喜歡這個想法,你有一個如何實現它的例子嗎?謝謝;-) – martin 2009-11-05 12:34:33

+0

邊幹邊幹!沒有人教過我,黑道。 – 2009-11-05 13:45:54

+0

我真的不喜歡讓孩子告訴父母該做什麼的想法! – 2009-11-05 22:45:21

0

如果應用程序很大,我會在用戶與應用程序交互時使用addChild/removeChild。

但是,如果它相當小,簡單的可見真/假很好。

聽起來像你是在第一種情況。

但是,絕對使用類/對象作爲您的站點地圖,用於填充您的導航,跟蹤模塊引用,用戶所在的位置以及可用於深度鏈接的位置。

至於深度交換,我假設你正在談論的視覺深度,實現之間的這些:)

setChildIndex(example,0); // send to back 

setChildIndex(example,numChildren - 1); // bring to front 

交換:

setChildIndex(example, otherindex) //pushes the other thing forward 

var otherindex = getChildIndex(theotherthing); 

那件事的背後

前面:

setChildIndex(example, otherindex + 1); 

HTH。

相關問題