質問

私はグリッドコンポーネントを持っています、そして、それは垂直scrollpolicyが「自動」に設定されています。そして、VerticalScrollbarが現れたり消えたりするたびに、このイベントを処理したいと思います。

私はサイズのイベントを聞こうとしました:

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

しかし、それはうまくいきません。グリッドビジュアルアップデートとスクロールバーが表示/消滅する前に、実際にサイズのイベントが実際にディスパッチされることは私には思えます。私はchildexistencechedevent.child_addとchildexistencechechedevent.child_removeイベントを聞こうとしましたが、それも私にはうまくいきません。

たぶん、私はいくつかの明白な解決策を見ていません。どんな助けもアドバイスしてくれてありがとう。

役に立ちましたか?

解決

どのグリッドを指定しません。 (Spark、MX、または私たちの1つ(http://www.flexicious.com/home/ultimate) )

あなたができることの1つは、チェックする前にvalidAtenowを投げることです。

private function onGridResize(event:Event):void
    {
       _grid.validateNow(); //add this.

       if (_grid.verticalScrollBar && _grid.verticalScrollBar.visible)
       {
           trace("scroll on");
       }
       else
       {
           trace("scroll off");
       }
    }

あなたもできるもう1つのことは、タイマーを使用するか、後で電話することです。

private function onGridResize(event:Event):void
    {
       callLater(checkForScrollBar); //check for scrollbar would have the code above.
    }

他のヒント

おそらく、あなたはの「ショー」イベントを聞くことができます ScrollBar 自体。これに沿った何かが機能するはずです:

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

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

ちなみに、あなたはそれをチェックする必要はありません ScrollBar 存在する;少なくとも純粋なAS3では、それらは DataGrid そして、彼らに関係なく存在します ScrollPolicy 価値。

サイズ変更イベントがすぐに発砲するように見える理由は、その寸法が変わるとすぐに発送されるためです。アプリケーションでは、ユーザーがドラッグしてグリッドのサイズを手動で調整するため、調整が行われるとすぐにイベントが発射されると想定しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top