2012-05-30 66 views
0

我已經修改了我的VScrollBar的滾動條皮膚每Steven Shongrunden的優秀文章http://flexponential.com/2009/10/09/changing-the-position-of-the-scroll-bars-in-a-spark-list/,所以只有上下按鈕,沒有滾動條。修改flex火花滾動滾動頁面,緩動

現在我想修改滾動條的行爲,以便每滾一下就滾動一頁。更好的是,我希望使用緩動來滾動動畫,即不是每頁跳轉一次,而是使用動畫滾動。

的ScrollBarBase http://www.flex-component.com/asdoc/kcdualslider/spark/components/supportClasses/ScrollBarBase.html文檔建議一個數量的,應提供實現這一目標的手段方法,但我找不到如何使用這些優秀的方法和屬性的任何實例:

animatePaging(newValue:Number, pageSize:Number): 
    Animates the operation to move to newValue. 

button_buttonDownHandler(event:Event): 
    Handles a click on the increment or decrement button  

button_buttonUpHandler(event:Event): 
    Handles releasing the increment or decrement button 

decrementButton:Button 
    An optional skin part that defines a button that, when pressed, steps the scrollbar up. 

incrementButton:Button 
    An optional skin part that defines a button that, when pressed, steps the scrollbar down. 

我預感是我需要中斷button_buttonUp/DownHandlers遞減按鈕和incrementButton並調用animatePaging,但我真的不知道如何做到這一點。儘管已經寫了大量的AS3併成功地修改了很多皮膚,但這些火花皮仍然對我保持神祕。

期待着任何見解!

謝謝!

回答

1

我找到了解決我的問題。

我需要擴展VScrollBar類。一旦我做到了這一點是一個簡單的事情來覆蓋button_buttonDown/UpHandlers。

,具有擴展的VScrollBar類,在我的皮膚,我取代

<my_namespace:CustomVScrollBar for <s:VScrollBar 

這裏是我的CustomVScrollBar的要點。我正在使用gs.TweenLite,但是您可以使用任何Tweener進行動畫

package my_package { 

    import flash.events.Event; 
    import gs.TweenLite; 
    import spark.components.VScrollBar; 



    public class CustomVScrollBarextends VScrollBar 
    { 

     public function CustomVScrollBar() 
     { 
      super(); 
     } 



     override protected function button_buttonDownHandler(event:Event):void { 
      var valueTo:Number; 
      if (event.target == incrementButton) { 
       valueTo = Math.min(value+pageSize, maximum); 
      } else if (event.target == decrementButton) { 
       valueTo = Math.max(value-pageSize, minimum); 
      } 
      if (! isNaN(valueTo)) { 
       TweenLite.to(this.viewport, .75, {verticalScrollPosition: valueTo}); 
      } 
     } 

     override protected function button_buttonUpHandler(event:Event):void { 
      // 
      // nothing 
     } 

    } 
}