Flex静态变量不能像我需要的那样工作



我找了又找,找不到答案。事实上,我读到的所有东西似乎都表明我做得对,但这并不奏效。

我正在开发一个网络地图应用程序。我想创建一个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

我并没有找到任何令人满意的答案,所以我最终扩展了一堆类,这样我就不必使用静态变量和方法了。这是更多的工作,但最终提供了一个更好看的解决方案。

相关内容

  • 没有找到相关文章