2011-04-21 70 views
0

我正在製作一個世界構建器,它將加載由xml文檔表示的工具包。該文件將看起來類似於以下內容:將嵌套文件夾表示爲DisplayObjects

<?xml version="1.0" encoding="utf-8"?> 
<toolkit> 
    <folder name="environment"> 
     <folder name="terrain"> 
      <tool name="grass"> 
       <classname>game.terrain.Grass</classname> 
       <layer>terrain</layer> 
      </tool> 
      <tool name="dirt"> 
       <classname>game.terrain.Dirt</classname> 
       <layer>terrain</layer> 
      </tool> 
      <tool name="water"> 
       <classname>game.terrain.Water</classname> 
       <layer>water</layer> 
      </tool> 
     </folder> 
     <folder name="mobile"> 
      <folder name="enemies"> 
       <tool name="youngzombie"> 
        <classname>game.mobiles.YoungZombie</classname> 
        <layer>mobiles</layer> 
       </tool> 
       <tool name="zombie"> 
        <classname>game.mobiles.Zombie</classname> 
        <layer>mobiles</layer> 
       </tool> 
      </folder> 
     </folder> 
     <tool name="player"> 
      <classname>game.mobiles.Player</classname> 
      <layer>mobiles</layer> 
     </tool> 
</toolkit> 

現在,我想能夠在Flash中表示此結構。垂直佈局非常簡單,只需將元素從上到下放置即可。當我需要執行以下操作時,它變得令人難以置信:

  1. 能夠單擊任何文件夾並隱藏/顯示其所有子項。
  2. 根據分層位置水平放置元素(文件夾的縮進子元素,子文件夾的子元素等)
  3. 當隱藏上方和同一「目錄」中的文件夾時,垂直放置文件夾/工具。

它聽起來比現在容易得多,或者我錯過了一個重要且明顯的步驟。

只是爲了避免混淆 - 當我提及「文件夾」和「工具」,這些都是一個影片剪輯這是一個簡單的塊文本上它,像:

------ 
folder 
------ 
    ------ 
    folder 
    ------ 
     ---- 
     tool 
     ---- 
     ---- 
     tool 
     ---- 
    ------ 
    folder 
    ------ 
     ---- 
     tool 
     ---- 
---- 
tool 
---- 
+0

嗨馬蒂,你應該明確地去Flex和使用樹! – Kodiak 2011-04-21 08:07:44

+0

@Kodiak謝謝:),你能否提供一個資源來解釋樹是什麼以及如何實現它? – Marty 2011-04-21 10:20:17

+0

他指的是樹列表視圖。 http://livedocs.adobe.com/flex/3/html/help.html?content=dpcontrols_8.html。 – 2011-04-21 11:34:46

回答

0

我做的同樣沒有使用樹,因爲佈局對我來說不是有用的(移動應用程序)。 您可以爲每一個讀取xml中的每個元素,併爲每個標記添加一個父元素和元素他的子元素。 我用tileList製作一個視圖,並給出一個作爲dataprovider-tag的數組提供者標籤,該標籤充滿了xmlfile的元素。該列表將通過點擊一個項目或上一個按鈕進行更改。您可以在您的tileList itemrenderer中創建一個onDataChange,以便通過您的數組列表中的新數據重新創建tileList。 如果您單擊一個項目,您可以顯示這些子項。 如果你點擊上一個文件夾,你可以顯示父對象(有他自己的孩子)。

不知道你是否理解工作方式。如果您對此有疑問,請詢問;)。

+0

謝謝;一切都很有意義:) – Marty 2011-04-21 12:48:55