我找了又找,找不到答案。事实上,我读到的所有东西似乎都表明我做得对,但这并不奏效。
我正在开发一个网络地图应用程序。我想创建一个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数组Collection中的一个对象。例如,我将有一个BufferSelectionSet和一个QuerySelectionSet。当我打开缓冲区小部件时,我希望_currentSelectionSet保存_selectionSets数组集合中相应的selectionSet。这样,每当我在Bufferwidget打开时点击某个东西,它就会被添加到适当的选择集。
现在,我的两个小部件都导入了SelectionManager类,但没有将其实例化。实际情况是,当我期望它们拥有相同的SelectionManager,具有相同的静态变量时,我的这两个小组件似乎都持有不同的SelectionManager。
例如,如果我在BufferWidget中设置currentSelectionSet,我会看到它被设置为ArrayCollection中的Object。但是,如果我从查询小部件中查看currentSelectionSet,它将为null。
我不确定我是否足够清楚,如果有必要,我可以提供更多细节。就像我说的,我看了又看,都没有成功。此外,我不是Flex和AS3.0的初学者,在其他编程语言方面也有相当多的经验。我完全被这件事难住了,也许这只是漫长的一天。
谢谢你的帮助。
添加信息:
我的小部件在一个与utils包平行的包中,即:SomePackage.widgets
我并没有找到任何令人满意的答案,所以我最终扩展了一堆类,这样我就不必使用静态变量和方法了。这是更多的工作,但最终提供了一个更好看的解决方案。