我已經搜索並搜索,找不到答案。實際上,我一直在閱讀的所有內容似乎都指出了我已經做得正確的事實,但它只是不起作用。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
顯示如何從小部件中設置_currentSelectionSet。 – 2012-07-25 20:36:18
我通過一個名爲SetcurrentSelectionSet(SetName:String)的靜態函數來設置它。 _selectionSets ArrayCollection中的對象具有Name屬性和一個Set屬性。該函數循環遍歷SelectionSets中的所有集合,並比較名稱,當它找到一個類似於_currentSelectionSet = _selectionSets [i] – Ggilmann 2012-07-25 21:00:18
的東西時,我目前沒有編碼,所以我不能更精確。但是它爲設置它的小部件設置正確。其他小部件只是看到一個空值 – Ggilmann 2012-07-25 21:02:46