Скиннинг горизонтальной полосы прокрутки с помощью Degrafa - PullRequest
0 голосов
/ 10 октября 2009

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

Здесь я определяю горизонтальный список, где мне нужна полоса прокрутки со скином. </p> <pre><code><mx:HorizontalList horizontalScrollBarStyleName="thumbnailScrollbar"/>

Здесь я определяю ClassReference для скинов (null для стрелок, чтобы они не отображались). </p> <pre><code>.thumbnailScrollbar { up-arrow-skin: ClassReference(null); down-arrow-skin: ClassReference(null); trackSkin: ClassReference("ScrollBarTrackSkin"); thumbSkin: ClassReference("ScrollBarThumbSkin"); }

ScrollBarTrackSkin: </p> <pre><code><?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: </p> <pre><code><?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>

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

1 Ответ

2 голосов
/ 13 октября 2009

Где устанавливаются значения 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, и мои панели тоже не показывались.

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

...