不过由于设计的关系..
滚动条的thumbSkin常设置成一个"点"或一个"块"..
这个块是固定大小的..不像Flex自带的滚动条会随滚动区域的高度而改变..
如果直接设置thumbSkin,那滑块将拉变形~非常难看..
这时候我们可以使用verticalScrollBar里的setScrollProperties方法来调整滑块高度..
public function setScrollProperties(pageSize:Number, minScrollPosition:Number, maxScrollPosition:Number, pageScrollSize:Number = 0):void
我们以TextArea的滚动条为例,对比看看效果
代码如下:
自定义MyTextArea(为了调用protected的verticalScrollBar)
package
{
import flash.events.Event;
import mx.controls.TextArea;
import mx.events.FlexEvent;
public class MyTextArea extends TextArea
{
public function MyTextArea()
{
super();
}
//每次刷新滚动条时调用一次setScrollProperties,设置pageSize为0
override protected function setScrollBarProperties(totalColumns:int, visibleColumns:int, totalRows:int, visibleRows:int):void
{
super.setScrollBarProperties(totalColumns,visibleColumns,totalRows,visibleRows);
if(verticalScrollBar)verticalScrollBar.setScrollProperties(0,verticalScrollBar.minScrollPosition,verticalScrollBar.maxScrollPosition,0);
}
}
}
主MXML
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init()" xmlns:local="*" width="500" height="400" fontSize="12">
<mx:Style>
.myTextArea
{
downArrowSkin: Embed(source="down.png");
upArrowSkin: Embed(source="up.png");
trackSkin: Embed(source="track.png",scaleGridTop="20",scaleGridLeft="7",scaleGridRight="9",scaleGridBottom="80");
thumbSkin: Embed(source="thumb.png");
}
</mx:Style>
<mx:Script>
<![CDATA[
[Bindable]
private var content:String="";
private function init():void
{
for(var i:uint=0;i<50;i++)content+="\n L4cd.Net 简单工作 \n";
}
]]>
</mx:Script>
<local:MyTextArea text="{content}" verticalScrollBarStyleName="myTextArea" verticalScrollPolicy="on" borderStyle="none" borderThickness="1" width="235" x="10" height="352" y="38"/>
<mx:TextArea text="{content}" verticalScrollBarStyleName="myTextArea" verticalScrollPolicy="on" borderStyle="none" borderThickness="1" height="352" y="38" width="235" x="255"/>
<mx:Label x="10" y="10" text="自定义TextArea"/>
<mx:Label x="255" y="10" text="默认TextArea"/>
</mx:Application>

