1

我已经搜索和搜索,但找不到答案。实际上,我一直在阅读的所有内容似乎都表明我做得正确,但它只是不起作用。

我正在开发一个网络地图应用程序。我想创建一个可供我的所有 mxml 文件(小部件)使用的 SelectionManager 类。关键是我有多个小部件,它们将从地图中选择东西,而不是在小部件之间来回发送事件,我宁愿有一个包含所有信息的类。

现在,我尝试过这样的事情:

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,具有相同的静态变量。

例如,如果我从缓冲区小部件中设置 currentSelectionSet,我会看到它设置为 ArrayCollection 中的对象。但是,如果我从查询小部件中查看 currentSelectionSet,它将为空。

我不确定我是否足够清楚,如有必要,我可以提供更多详细信息。就像我说的,我看了又看,没有成功。此外,我不是 Flex 和 AS 3.0 的初学者,并且在其他编程语言方面有相当多的经验。我完全被这件事难住了,也许这只是漫长的一天。

谢谢你的帮助。

补充资料:

我的小部件位于与 utils 包平行的包中,即: SomePackage.Widgets

4

1 回答 1

0

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

于 2012-07-26T15:49:45.537 回答