0

尝试使用 Degrafa 对水平列表上的滚动条进行蒙皮时遇到一些问题。滚动条根本不显示。我检查了滚动条是否应该在没有蒙皮的情况下显示,并且确实如此。这样做有什么问题吗?这是一些代码:

这是我定义想要皮肤滚动条的 Horizo​​ntalList 的地方

<mx:HorizontalList horizontalScrollBarStyleName="thumbnailScrollbar"/>

这是我为皮肤定义 ClassReference 的地方(箭头为空,因此它们不会显示)。

.thumbnailScrollbar
{
    up-arrow-skin:      ClassReference(null);
    down-arrow-skin:    ClassReference(null);
    trackSkin:      ClassReference("ScrollBarTrackSkin");
    thumbSkin:      ClassReference("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="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>

我正在使用比可见项更多的项目填充 Horizo​​ntalList,就像我在删除蒙皮时滚动条出现之前所说的那样。

4

1 回答 1

2

你的 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 滚动条外观中有一些 hacky 代码,我的滚动条也没有出现。

但我目前没有在我的皮肤上使用 degrafa,所以可能还有另一个问题。我面前没有任何例子。

于 2009-10-13T02:56:24.783 回答