2010-12-08 7 views
11

Dentro de mi aplicación estoy usando un componente Scroller. Parece que no puedo averiguar en qué evento debo configurar a un oyente para saber cuándo se desplaza el contenido. Intenté Event.CHANGE en la propiedad Scroller.verticalScrollBar pero aparentemente ese evento no se dispara cuando el usuario se desplaza con la rueda del mouse o las teclas de flecha.Flex 4 Scroller

Respuesta

23

Puede escuchar el evento propertyChange en la ventana del Scroller. Aquí es una aplicación que muestra cómo se puede hacer esto:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       creationComplete="init()"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.events.PropertyChangeEvent; 

      private function init():void { 
       // spark Scroller: listen on the viewport property 
       myScroller.viewport.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, handle); 
      } 

      /** 
      * Handle scroll position changes 
      */ 
      private function handle(e:PropertyChangeEvent):void { 
       if (e.source == e.target && e.property == "verticalScrollPosition") 
        trace(e.property, "changed to", e.newValue); 
       if (e.source == e.target && e.property == "horizontalScrollPosition") 
        trace(e.property, "changed to", e.newValue); 
      } 
     ]]> 
    </fx:Script> 

    <s:Scroller id="myScroller" width="100" height="100"> 
     <s:Group> 
      <s:Button label="large content" width="300" height="300"/> 
     </s:Group> 
    </s:Scroller> 

</s:Application> 
+0

gracias por la respuesta. Si solo hubieras publicado antes. De cualquier manera, terminé haciendo algo similar al configurar un ChangeWatcher en esas dos propiedades del IViewport. – Andrey

+0

exactamente lo que estaba buscando. ¡Gracias! – ufk

0
slidePanel.slidesComponentsContainer.slidesList.scroller.addEventListener(
    TouchInteractionEvent.TOUCH_INTERACTION_START, 
    onSlideListVertScrollerTouchInteractionStart 
); 
Cuestiones relacionadas