我有一个网格组件,它的垂直旋风将设置为“自动”。每次出现或消失垂直旋转时,我都想处理此事件。

我试图收听调整大小事件:

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

但这行不起作用:在我看来,调整事件的调整实际上是在网格视觉更新和滚动栏出现/消失之前派遣的。我试图听ChildExistenceChangedEvent.CHILD_ADD和CHILDEXISTENCECHANGEDEVENT.CHILD_REMOVE活动,但这也对我不起作用。

也许我只是看不到明显的解决方案。事先感谢您的任何帮助或建议。

有帮助吗?

解决方案

您不指定哪个网格。 (Spark,MX或我们之一(http://www.flexious.com/home/ultimate) )

您可以做的一件事是在检查之前扔一个valtatenow:

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

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

您也可以做的另一件事是使用计时器或以后打电话。

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