2009-10-12 6 views

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

     } 
    }  
    } 
Questions connexes