2010-12-08 16 views
11

Innerhalb meiner Anwendung verwende ich eine Scroller Komponente. Ich kann nicht herausfinden, auf welchem ​​Ereignis ich einen Listener einrichten sollte, um zu wissen, wann der Inhalt gescrollt wird. Ich versuchte Event.CHANGE auf Scroller.verticalScrollBar Eigenschaft, aber anscheinend feuert dieses Ereignis nicht, wenn der Benutzer mit einem Mausrad oder Pfeiltasten scrollt.Flex 4 Scroller

Antwort

23

Sie können das Ereignis propertyChange im Ansichtsfenster des Scrollers abhören. Hier ist eine Anwendung, die zeigt, wie dies geschehen könnte:

<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

Vielen Dank für die Antwort. Wenn du nur früher gepostet hättest. So oder so habe ich etwas ähnliches getan, indem ich einen ChangeWatcher für diese beiden Eigenschaften des IViewports eingerichtet habe. – Andrey

+0

genau das, was ich gesucht habe. Vielen Dank! – ufk

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