2

ArrayCollection の長さプロパティに eventListener を配置したいのですが、これを行う方法がわかりません。

これを行うのは、特定の数のものが特定の ArrayCollection にある場合にのみコードを実行したいからです。その長さプロパティが許容レベルに戻るまで、Flex が次のオブジェクトに対してこのコードを実行するのを待つ必要があります。NOOP を永遠に吐き出す while ループの代わりに、イベントでこれを行うべきだと思います (どちらも方法がわかりません)。

助けてください、そして前もって感謝します。SOはこれまで非常に役に立ちました。

4

2 に答える 2

3

ArrayCollection は、アイテムが変更されたときに「collectionChange」イベントを送出します。したがって、そのイベントをリッスンして、イベントがディスパッチされるたびに「長さ」プロパティを確認できます。または、BindingUtils.bindSetter(); を介して長さプロパティにバインドすることもできます。

于 2009-11-12T14:22:38.553 に答える
0

「collectionChange」イベントリスナーを追加して、前のイベント以降に ArrayCollection.length が変更されたかどうかを確認するだけです。(比較のために、ArrayCollection の長さの静的コピーまたはインスタンス コピーを保持する必要があります。)

もう 1 つの考えは、独自の lengthChangedEvent を作成し、ArrayCollection を拡張し、length プロパティをオーバーライドし、セッターで lengthChangedEvent リスナーを探して呼び出すことです。次に、イベントをリッスンする必要がある場合は、基本クラスの代わりに拡張 ArrayCollection を使用します。ただし、長さプロパティは読み取り専用であり、オーバーライドするセッターがないため、これは機能しません。ArrayCollection にアイテムを追加または削除できるすべてのメソッドをオーバーライドし、それぞれの場合に lengthChangedEvent リスナーをテスト/呼び出す必要があります。

于 2009-11-12T14:22:34.883 に答える