Скининг горизонтальной полосы прокрутки с помощью Degrafa

StackOverflow https://stackoverflow.com/questions/1545977

Вопрос

У меня возникают некоторые проблемы при попытке скинуть полосу прокрутки в horizontalList с помощью Degrafa.Полоса прокрутки вообще не отображается.Я проверил, должна ли полоса прокрутки отображаться без скининга, и это происходит.Есть ли какие-то проблемы с этим?Вот некоторый код:

Здесь я определяю HorizontalList, в котором мне нужна выделенная полоса прокрутки

<mx:HorizontalList horizontalScrollBarStyleName="thumbnailScrollbar"/>

Здесь я определяю ClassReference для скинов (null для стрелок, чтобы они не отображались).

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

Полоса прокрутки trackskin:

<?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>

Полоса прокрутки из кожи большого пальца:

<?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>

Я заполняю горизонтальный список большим количеством элементов, чем доступно для просмотра, и, как я уже говорил ранее, полоса прокрутки появляется, когда я удаляю скининг.

Это было полезно?

Решение

Где задаются ваши skinHeight и skinWidth?Как правило, примеры degrafa делают что-то подобное в оболочке, чтобы обновить высоту / ширину:

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

            }

В дополнение к этому, мне нужно было сделать это:

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

в моих скинах полосы прокрутки, чтобы получить нужную мне высоту и ширину.(то же самое для обоих V & H, поскольку они выполняют внутреннее вращение).В скинах Flex scrollbar был какой-то хакерский код, и мои полосы тоже не отображались.

Но в настоящее время я не использую degrafa для своих скинов, так что может возникнуть другая проблема.У меня нет перед глазами никаких примеров.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top