1

検索して検索しましたが、答えが見つかりません。実際、私が読んでいるすべてのことは、私がそれを正しく行ったという事実を示しているようですが、それは単に機能していません。

私はWebマッピングアプリケーションに取り組んでいます。すべての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は、_selectionSetsarrayCollection内のオブジェクトの1つを保持します。たとえば、BufferSelectionSetとQuerySelectionSetがあります。バッファウィジェットを開くとき、_currentSelectionSetが_selectionSets配列コレクションからの適切なselectionSetを保持するようにします。このように、Bufferwidgetを開いたときに何かをクリックすると、適切な選択セットに追加されます。

現在、両方のウィジェットがSelectionManagerクラスをインポートしていますが、インスタンス化はしていません。何が起こるかというと、同じ静的変数を持つ同じSelectionManagerを持つことを期待していたのに、両方のウィジェットが異なるSelectionManagerを保持しているように見えるということです。

たとえば、バッファウィジェット内からcurrentSelectionSetを設定すると、ArrayCollectionのオブジェクトに設定されていることがわかります。しかし、クエリウィジェットからcurrentSelectionSetを見ると、nullになります。

十分に明確かどうかはわかりませんが、必要に応じて詳細をお知らせします。私が言ったように、私は見たが成功しなかった。さらに、私はFlexとAS 3.0の初心者ではなく、他のプログラミング言語でかなりの経験があります。私はこれに完全に困惑しています、多分それはちょうど長い日でした。

助けてくれてありがとう。

追加情報:

私のウィジェットは、utilsパッケージと並行するパッケージに含まれています。つまり、SomePackage.Widgetsです。

4

1 に答える 1

0

私はこれに対する満足のいく答えを本当に見つけられなかったので、私はたくさんのクラスを拡張することになったので、静的変数とメソッドを使う必要はありませんでした。それはより多くの作業ですが、より見栄えの良いソリューションを提供することになります。

于 2012-07-26T15:49:45.537 に答える