Je voudrais créer un HSlider afin que la peau de la piste soit différente de chaque côté du pouce. Ainsi, par exemple, la piste sur le côté gauche du pouce est verte, mais rouge sur l'autre. Est-ce possible ou prendra-t-il un composant personnalisé?Comment obtenir un HSlider avec des peaux pour chaque côté du pouce
0
A
Répondre
1
Vous pouvez le faire par skinning. La barre de défilement entière est personnalisable. Vous avez juste besoin de définir le style trackSkin pour que HScrollBar soit un skin programmatique. Ensuite, votre peau sera essentiellement deux rectangles. 0 à parent.scrollPosition
. Et l'autre de parent.scrollPosition
à height
. Voici un exemple qui pourrait fonctionner. Je n'ai pas testé. Vous pourriez avoir besoin de jouer avec quelques chiffres.
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();
}
}
}