0

Grid コンポーネントがあり、verticalScrollPolicy が「auto」に設定されています。そして、verticalScrollBar が表示または非表示になるたびに、このイベントを処理したいと考えています。

RESIZE イベントをリッスンしようとしました:

    private function onGridResize(event:Event):void
    {
       if (_grid.verticalScrollBar && _grid.verticalScrollBar.visible)
       {
           trace("scroll on");
       }
       else
       {
           trace("scroll off");
       }
    }

しかし、それは機能しません: RESIZE イベントは、グリッドのビジュアル更新とスクロールバーが表示/非表示になる前に実際にディスパッチされるようです。ChildExistenceChangedEvent.CHILD_ADD および ChildExistenceChangedEvent.CHILD_REMOVE イベントもリッスンしようとしましたが、うまくいきません。

たぶん、明確な解決策が見えないだけです。ヘルプやアドバイスをお寄せいただきありがとうございます。

4

2 に答える 2

0

おそらく、それ自体の「show」イベントをリッスンできますScrollBar。これに沿った何かが機能するはずです:

_grid.verticalScrollBar.addEventListener(ComponentEvent.SHOW, onGridResize);

私はこれをテストしていませんが、うまくいくはずです。(もちろん、 のonGridResizeようなより適切な名前に変更することもできますonVerticalScrollShow。)

ところで、 がScrollBar存在することを確認する必要はありません。少なくとも純粋な AS3 では、それらは とともにインスタンス化され、その値DataGridに関係なく存在します。ScrollPolicy

resize イベントがすぐに発生するように見えるのは、サイズが変更されるとすぐにディスパッチされるためです。あなたのアプリケーションでは、ユーザーがドラッグしてグリッドのサイズを手動で調整するため、調整が行われるとすぐにイベントが発生すると想定しています。

于 2013-11-08T09:19:14.437 に答える