문제

그리드 구성 요소가 있고 세로화 된 ScrollPolicy가 "Auto"로 설정되어 있습니다. 수직 스크롤 바가 나타나거나 사라질 때 마다이 이벤트를 처리하고 싶습니다.

나는 Resize 이벤트를 들어 보려고 노력했습니다.

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

그러나 그것은 작동하지 않습니다. 나에게는 그리드 시각적 업데이트와 스크롤 바가 나타나기 전에 이벤트가 실제로 파견되는 것 같습니다. 나는 heidexistencechangedevent.child_add 및 heidexistencechangedevent.child_remove 이벤트를 들으려고 노력했지만 나에게도 효과가 없습니다.

어쩌면 나는 명백한 해결책을 보지 못할 것입니다. 도움이나 조언에 대해 미리 감사드립니다.

도움이 되었습니까?

해결책

어떤 그리드를 지정하지 않습니다. (Spark, MX 또는 우리 중 하나 (http://www.flexicious.com/home/ultimate) )

당신이 할 수있는 한 가지는 확인하기 전에 validateNow를 던지는 것입니다.

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