自定义FLEX滚动条滑块样式

在Flex里我们可以使用downArrowSkin,upArrowSkin,trackSkin,thumbSkin方法的设置滚动条的样式..
不过由于设计的关系..
滚动条的thumbSkin常设置成一个"点"或一个"块"..
这个块是固定大小的..不像Flex自带的滚动条会随滚动区域的高度而改变..
如果直接设置thumbSkin,那滑块将拉变形~非常难看..
这时候我们可以使用verticalScrollBar里的setScrollProperties方法来调整滑块高度..

public function setScrollProperties(pageSize:Number, minScrollPosition:Number, maxScrollPosition:Number, pageScrollSize:Number = 0):void


我们以TextArea的滚动条为例,对比看看效果

https://dl-web.dropbox.com/u/1184383/blog/post/post-old-141/other.swf

 

代码如下:
自定义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>

<body οnlοad="document.getElementById('swf id').focus()">

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值