2011-06-29 64 views
1

不知道這個問題是否屬於這裏,但我會嘗試。所以我即將把我的項目從Director |中移出Shockwave Player(如果你曾經聽說過這些)Flash Player出於各種原因,當我想如何更好地開始時,我得到了一個真正令我想知道的問題。重點。在Flash中動態UI窗口繪圖?

當前位於用戶界面中的每個遊戲窗口(如小警報或其中包含很多元素的大窗口)根據需要繪製 - 意味着實際窗口的圖形圖像由配置(所有(例如窗口背景由9個小片段組成,例如4個角落,4個位於角落之間的用於動態寬度和高度的中間片段以及1個用於填充的中央片段窗口),然後添加到舞臺。這種方法可以輕鬆編輯每個圖形元素,而無需重新繪製實際窗口及其中的所有內容,只要我們想要更改顏色方案或改進元素中的某些內容即可。它還可以節省資源,因爲只有在請求時纔會繪製窗口。

現在我得弄清楚它是否值得在Flash中編寫這樣的代碼也爲相反剛剛創建的所有窗口,並把他們在圖書館和添加在需要的時候上演。你怎麼看?是否值得編寫這樣的實現?

+0

應用程序(遊戲,後臺,網頁)的使命是什麼? –

+0

@ Xavi,這是MMO遊戲。 – Rihards

回答

1

IMO,它取決於1)你對Flash的繪圖API /圖形類有多舒適,以及2)每個窗口/對話需要多麼靈活。

如果將它們作爲靜態對象放在一起更容易 - 並且它們不一定需要靈活地更改尺寸/樣式(可以一方面指望自己需要更改多少次它最初是在多年前在Director中完成的?),與通過動態重新創建它們的時間/精力相比,顯然要容易得多,尤其是如果你對Flash的繪圖API不太滿意。那麼,如果你有時間/興趣,我肯定會建議你挖掘並以「正確」的方式來做,如果你想熟悉圖紙API。

我做這種事,通常的方法是這樣的:

  • 創建擴展雪碧/影片剪輯一個單獨的類;像'Dialog.as'。
  • 創建公共的init(),顯示()和隱藏()方法,和一個私人build()方法。
  • 初始化應用程序時init()只會被調用一次,並且需要一些全局參數來保持內部(填充,顏色等)。
  • show()接受文本(字符串)或甚至是Sprite/MovieClip的參數 - 無論您想在此對話框中顯示哪個參數。當被調用時(當你想產生一個窗口時),它使用這個 - 加上init()期間最初傳入的任何init參數來繪製自己,然後取消隱藏自身(補間.alpha屬性,或者簡單地設置。可見財產)。
  • 當你想關閉對話框時,確保調用hide()方法,它首先隱藏自己,然後清理創建的任何東西(刪除偵聽器等),以便下次調用它時可以吸引新鮮。

這也可能是有意義的傳遞到該對象到舞臺的引用(在原來的init()調用),以便它可以相應地在舞臺中心和大小本身,也的AddChild本身的顯示列表的頂部,以便它始終高於一切。

我希望這會有所幫助。

+0

哦,非常感謝這個答案 - 我認爲這個答案是沒有答案的。我會考慮晚上應該選擇哪條路線。再次感謝您提供的優點! :) – Rihards

+0

太好了,如果你想要任何具體的例子,請隨時問,我會盡力爲你開始一個快速的小班,開始合作。 – TimKlimowicz