2009-10-09 55 views
0

我在尝试使用Degrafa为horizo​​ntalList滚动滚动条时遇到了一些问题。滚动条根本不显示。我检查了滚动条是否应该在没有蒙皮的情况下显示,并且确实如此。有没有这样做的陷阱? 下面是一些代码:使用Degrafa蒙皮Horizo​​ntalList滚动条

这是我定义我想要一个蒙皮滚动

<mx:HorizontalList horizontalScrollBarStyleName="thumbnailScrollbar"/> 

这里Horizo​​ntalList将是我定义的ClassReference的皮肤(空的箭,使他们不显示) 。

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

我填充用得比较多的项目的Horizo​​ntalList将是可见的,就像我之前说的滚动条显示,当我取出剥皮。

回答

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滚动条皮肤中有一些黑客代码,我的酒吧也没有显示出来。

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

+0

覆盖updateDisplayList不再需要。 GraphicBorderSkin具有变量skinWidth和skinHeight,取代了重写函数的必要性。 – asawilliams 2009-10-13 14:20:18

+0

好的。不过,请尝试设置measuredHeight/measuredWidth。或者调试到updateDisplayList函数来查看维度是什么。 – Glenn 2009-10-13 19:59:06

+0

你说得对,两次测量都得到了0 – asawilliams 2009-10-13 20:17:54

相关问题