2012-07-25 26 views
1

我已經搜索並搜索,找不到答案。實際上,我一直在閱讀的所有內容似乎都指出了我已經做得正確的事實,但它只是不起作用。Flex靜態變量不能像我需要的那樣工作到

我正在開發一個web地圖應用程序。我想創建一個SelectionManager類,它可以用於我所有的mxml文件(小部件)。重點是我有多個小部件,它們將從地圖中選擇東西,而不是在小部件之間來回發送事件,我寧願有一個包含所有信息的類。

現在,我已經試過這樣的事情:

package SomePackage.utils 
{ 
    public class SelectionManager 
    { 
     public static var _selectionSets:ArrayCollection = new ArrayCollection(); 
     public static var _currentSelectionSet:Object; 

     (Many static functions... ex: AddToCurrentSelectionSet, removeFromCurrentSelectionSet, CreateNewSelectionSet, etc.) 
    } 
} 

的_selectionSets爲對象的ArrayCollection。 _currentSelectionSet包含_selectionSets arrayCollection中的一個對象。例如,我將有一個BufferSelectionSet和一個QuerySelectionSet。當我打開Buffer Widget時,我希望_currentSelectionSet從_selectionSets數組集合中保存適當的selectionSet。這樣,任何時候當BufferWidget打開時,我都會點擊它,它會被添加到適當的選擇集中。

現在,我的小部件都會導入SelectionManager類,但不會實例化它。會發生什麼是我的小部件似乎擁有不同的SelectionManager,而我期待他們擁有相同的SelectionManager,具有相同的靜態變量。例如,如果我從我的Buffer Widget中設置currentSelectionSet,我會看到它被設置爲ArrayCollection中的Object。但是,如果我從查詢小部件查看currentSelectionSet,它將爲空。

我不確定我是否足夠清晰,如有必要,我可以提供更多細節。就像我說的,我看起來並沒有成功。此外,我不是Flex和AS 3.0的初學者,並且在其他編程語言方面有相當多的經驗。我完全沉迷於此,也許這只是漫長的一天。

感謝您的任何幫助。

添加的信息:

我的部件在平行於utils包一個包,即:SomePackage.Widgets

+1

顯示如何從小部件中設置_currentSelectionSet。 – 2012-07-25 20:36:18

+0

我通過一個名爲SetcurrentSelectionSet(SetName:String)的靜態函數來設置它。 _selectionSets ArrayCollection中的對象具有Name屬性和一個Set屬性。該函數循環遍歷SelectionSets中的所有集合,並比較名稱,當它找到一個類似於_currentSelectionSet = _selectionSets [i] – Ggilmann 2012-07-25 21:00:18

+0

的東西時,我目前沒有編碼,所以我不能更精確。但是它爲設置它的小部件設置正確。其他小部件只是看到一個空值 – Ggilmann 2012-07-25 21:02:46

回答

0

我真的沒有發現這方面的任何令人滿意的答案,所以我結束了延伸的一堆類,所以我不必去靜態變量和方法。這是更多的工作,但最終提供了一個更好看的解決方案。

相關問題