Как получить HSlider со скинами для каждой стороны большого пальца - PullRequest
0 голосов
/ 13 октября 2009

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

Возможно ли это или потребуется специальный компонент?

1 Ответ

1 голос
/ 15 октября 2009

Вы можете сделать это через скиннинг. Вся полоса прокрутки настраивается. Вам просто нужно установить стиль 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();

      }
    }    
  }
...