2010-01-08 26 views
0

我希望這不是太模糊,但是我陷入了一個讓我處於不幸位置的問題。我應該如何爲ActionScript 3中的複雜對象構造數據?

我是Flash開發者,用AS3弄溼了自己的腳,並試圖爲客戶構建室內裝飾工具。到目前爲止,我的想法是:創建基本的用戶界面,獲取屏幕流,然後最終使用幾個簡單的數組來存儲用戶選擇和類似的東西。

當然,我的'簡單數組夫婦'完全不足以模擬我的程序必須考慮的許多用戶決策。所以,我發現自己在嘗試創建嵌套和之前恐慌套幾層一個巨大的,多維數組

下面是僞ActionScript中應用的「牀上用品」組件我的思想的一個例子:

bedding['size'] = 'king':String 
bedding['cover'] = cover:Array 

    cover['type']   = 'coverlet':String 
    cover['style']   = 'style_one':String 
    cover['variation']  = 'varation_one':String 
    cover['fabric']   = fabrics:Array 

     fabrics[0] = 'paisely':String 
     fabrics[1] = 'argyle':String 
     fabrics[2] = 'plaid':String 

    cover['trim']   = trim:Array 

     trims[0] = trim_pair:Array 

      trim_pair['type'] = 'trim_one':String 
      trim_pair['color'] = 'blue':String 

     trims[1] = trim_pair:String 
     trims[2] = trim_pair:String 

    cover['embellishments'] = embellishment_pair:Array 
     embellishment_pair['type'] = 'monogram':String 
     embellishment_pair['letters'] = 'TL':String 

...請記住,這只是牀上用品的一小部分,還有其他幾種可以進入房間的陣列,例如地板和牆壁以及funture ......都同樣複雜。而且我需要經常訪問不同的組合,比如牀上用品有多少選項沒有價值關聯等等。

所以,我意識到我已經脫離了我的聯盟,並且會因此而受到傷害,但是我想努力爭取這一點,這樣我就會變得更好,並且任何幫助你們都能提供的很好。

我的問題是:

1)會不會是使用嵌套數組這樣其實並不是一件壞事,我應該只是堅持下去?這會讓我感到驚訝,但我想確保我還沒有走上正確的道路。

2)如果沒有,如果我想這樣做,我該從哪裏出發?

關閉我的頭頂我覺得我可以讓所有的課都基於。所以我的牀單是一個班級,牀有牀單和房間的實例牀等等。它認爲這將是複雜的,但可能是要走的路。

或者,也許,我走XML路線,並將所有房間選項存儲在嵌套的空白XML節點中,然後用戶在應用程序中移動時填充它們。

這些是我的想法,但我想聽聽更多有經驗的社區成員說。

非常感謝您的幫助!

回答

2

我的建議是使用強類型模型。研究使用集合和值對象來存儲和檢索數據。集合可以是一個包裝數組的類,並提供一個乾淨的接口來獲取它存儲的值對象。價值對象是簡單的對象,表示可以以各種方式組裝的數據,以創建更復雜的集合。值對象也可以傳遞給應用程序的各個部分。使用集合和值對象的好處是,與使用動態方法相比,您的代碼將(可能)更加明確,並且更易於閱讀。對於某些人來說,這種方法的缺點是你最終會得到太多的課程。就個人而言,我更喜歡與許多中小型班級相比,而不是一個單一的班級。

如果您不熟悉價值對象的概念:http://en.wikipedia.org/wiki/Data_transfer_object

0

AFAIK,AS3不適合您嘗試創建的複雜數據模型類型。

您需要將UI/Flash層從「庫存」系統中徹底解耦。用戶界面應該完全抽象,不需要知道或耦合到您的數據模式或內容。這可以通過一箇中間層Web服務風格的系統來完成,該系統處理搜索/檢索/更新數據的所有業務邏輯。

存儲您的UI在產品元數據中處理呈現方呈現所需的所有內容。這將允許您添加新產品和類型,而無需在每次引入新產品時更新UI。例如,如果產品附帶圖像,請將URI存儲到帶有產品記錄的圖像並按需加載。您可以將此擴展到自定義動畫,我相信 - 只需引用外部.SWF文件並根據請求將其加載到您的應用程序中即可。

+0

我應該提到我正在使用MVC框架(PureMVC)將UI與業務邏輯分開。我所描述的問題完全在於程序的業務邏輯方面。 – Thomas 2010-01-08 19:53:53

相關問題