2009-10-12 2 views
0

Я бы хотел создать HSlider, чтобы кожа трека отличалась по обе стороны от большого пальца. Так, например, дорожка с левой стороны большого пальца зеленая, но красная - с другой.Как получить HSLider со шкурами для каждой стороны большого пальца.

Возможно ли это, или это займет собственный компонент?

ответ

1

Вы можете сделать это с помощью скининга. Вся полоса прокрутки настраивается. Вам просто нужно установить стиль trackSkin для HScrollBar как программный скин. Тогда ваша кожа будет в основном двумя прямоугольниками. 0 до parent.scrollPosition. А другой от parent.scrollPosition до height. Вот пример, который может сработать. Я не тестировал. Возможно, вам придется играть с некоторыми номерами.

public class ScrollBarSkin extends Border 
    { 
    //maybe needed as a hack for the flex internals. Values may need to be changed for specific cases 
    override public function get measuredWidth():Number {return 16; } 
    override public function get measuredHeight():Number {return 10;} 

    override protected function updateDisplayList(w:Number, h:Number):void { 
     super.updateDisplayList(w,h); 

     if(this.parent) { 
     var g:Graphics = this.graphics; 
     g.clear(); 

     //top 
     g.beginFill(0xFF0000); 
     g.drawRoundRect(1,1, w, parent.scrollPosition); 
     g.endFill(); 

     //bottom 
     g.beginFill(0x00FF00); 
     g.drawRoundRect(0, parent.scrollPosition, w, h); 
     g.endFill(); 

     } 
    }  
    }