0

トラックのスキンが親指の両側で異なるように HSlider を作成したいと思います。たとえば、親指の左側のトラックは緑ですが、もう一方のトラックは赤です。

これは可能ですか、それともカスタム コンポーネントが必要ですか?

4

1 に答える 1

1

これは、スキニングを介して行うことができます。スクロールバー全体がカスタマイズ可能です。HScrollBar の trackSkin スタイルをプログラム スキンに設定するだけです。そうすると、あなたの肌は基本的に2つの長方形になります。0 ~parent.scrollPosition. もう 1 つは から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();

      }
    }    
  }
于 2009-10-14T20:02:19.110 に答える