Question

J'ai quelques problèmes en essayant de dépecer la barre de défilement sur un HorizontalList avec Degrafa. La barre de défilement ne se présente pas du tout. J'ai vérifié pour voir si la barre de défilement est censé se présenter sans l'écorcher, et il le fait. Y a-t-il des avertissements relatifs à le faire? Voici un code:

est où je définir le HorizontalList où je veux une peau scrollbar

<mx:HorizontalList horizontalScrollBarStyleName="thumbnailScrollbar"/>

Voici où je définis le ClassReference pour les peaux (null pour les flèches afin qu'ils n'apparaissent).

.thumbnailScrollbar
{
    up-arrow-skin:      ClassReference(null);
    down-arrow-skin:    ClassReference(null);
    trackSkin:      ClassReference("ScrollBarTrackSkin");
    thumbSkin:      ClassReference("ScrollBarThumbSkin");
}

ScrollBarTrackSkin:

<?xml version="1.0" encoding="utf-8"?>
<GraphicBorderSkin  xmlns:mx="http://www.adobe.com/2006/mxml" 
                xmlns="http://www.degrafa.com/2007">
    <fills>
        <SolidFill id="upFill" color="#FFFFFF" alpha="0.8"/>
    </fills>

    <geometry>
        <RoundedRectangle id="track" x="-8" cornerRadius="16" width="{this.skinWidth}" height="{this.skinHeight}" fill="{upFill}"/>
    </geometry>

</GraphicBorderSkin>

ScrollBarThumbSkin:

<?xml version="1.0" encoding="utf-8"?>
<GraphicBorderSkin  xmlns:mx="http://www.adobe.com/2006/mxml" 
                       xmlns="http://www.degrafa.com/2007">

    <fills>
        <SolidFill id="background" color="#333333" alpha=".8"/>
    </fills>

    <geometry>
        <RoundedRectangle id="thumb" cornerRadius="16" width="{this.skinWidth}" height="{this.skinHeight}" fill="{background}"/>
    </geometry>
</GraphicBorderSkin>

Je suis peuplant le HorizontalList avec plus d'éléments que sont visibles, et comme je l'ai dit avant que la barre de défilement apparaît lorsque je retire le skinning.

Était-ce utile?

La solution

Où est votre skinHeight et skinWidth étant fixés? En règle générale, degrafa exemples font quelque chose comme ça dans la peau de mettre à jour le rapport hauteur / largeur:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                awidth = unscaledWidth;
                aheight = unscaledHeight;

            }

En plus de cela, je devais faire ceci:

override public function get measuredWidth():Number {return 16; }
override public function get measuredHeight():Number {return 10;}

dans mes peaux scrollbar pour obtenir la hauteur et la largeur que je voulais. (Même pour les deux V & H comme ils le font tourner à l'intérieur). Il y avait un code hacky dans la peau scrollbar Flex et mes barres ne montraient pas non plus.

Mais je ne suis pas actuellement en utilisant degrafa pour mes peaux, donc il peut y avoir une autre question. Je n'ai pas d'exemples devant moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top