如何获得每个拇指的皮肤HSlider

时间:2009-10-12 21:33:27

标签: flex skinning

我想创建一个HSlider,以便拇指两侧的轨道皮肤不同。因此,例如,拇指左侧的轨道为绿色,而另一侧为红色。

这可能还是需要自定义组件?

1 个答案:

答案 0 :(得分:1)

您可以通过蒙皮来完成此操作。整个滚动条可自定义。您只需将HScrollBar的trackSkin样式设置为编程外观。然后你的皮肤基本上是两个矩形。 0到parent.scrollPosition。另一个从parent.scrollPositionheight。这是一个可行的例子。我没有测试过。你可能需要摆弄一些数字。

  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();

      }
    }    
  }
相关问题