Frage

Ich habe eine Gitterkomponente und es ist vertikalScrollpolicy ist auf "automatisch" eingestellt. Und jedes Mal, wenn die VerticalScrollbar erscheint oder verschwindet, möchte ich dieses Ereignis erledigen.

Ich habe versucht, das Ereignis der Größe zu hören:

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

Aber es funktioniert nicht: Es scheint mir, dass die Größe der Größe das Ereignis tatsächlich versendet, bevor das visuelle Update und die Scrollbar der Gitter erscheinen/verschwinden. Ich habe versucht, ChildExIstencechangeDeDEvent.Child_Add und ChildExIstencechangeDeDEvent.child_remove Events zu hören, aber es funktioniert auch nicht für mich.

Vielleicht sehe ich einfach keine offensichtliche Lösung. Vielen Dank im Voraus für jede Hilfe oder Beratung.

War es hilfreich?

Lösung

Sie geben nicht an, welches Netz. (Spark, MX oder einer von uns (http://www.flexicious.com/home/ultimate) )

Eine Sache, die Sie tun können, ist eine Validierung vor dem Überprüfen zu werfen:

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

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

Die andere Sache, die Sie auch tun können, ist, einen Timer zu verwenden oder später anzurufen.

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

Andere Tipps

Vielleicht können Sie auf das "Show" -Event der "der" hören ScrollBar selbst. Etwas in der Richtung sollte funktionieren:

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

Ich habe das nicht getestet, aber ich bin mir ziemlich sicher, dass es funktionieren sollte. (Natürlich möchten Sie vielleicht umbenennen onGridResize zu etwas besser geeignetem wie onVerticalScrollShow.)

Übrigens müssen Sie nicht überprüfen, ob das ScrollBar existiert; Zumindest in reinem AS3 werden sie zusammen mit dem instanziiert DataGrid und existieren unabhängig von ihren ScrollPolicy Wert.

Der Grund, warum das Ereignis der Größenänderung sofort zu schießen scheint, ist, dass es geschickt wird, sobald sich seine Dimensionen ändern. Ich gehe davon aus, dass der Benutzer in Ihrer Anwendung die Größe des Gitters manuell anpassen und so die Ereignisse abfeuern, sobald jede Einstellung vorgenommen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top