想写一套组件给大家,本来想从自定义button说起的,但是为了给大家点积极性,我还是先贴出VScrollBar.as吧
简单来说就是利用遮罩,滚动条和滚动对象是一起滚动的,使用的时候,用一个背景sp绘制组件背景,用一个scrollBarSp放置滚动条显示对象,然后新建一个放置列表的sp,将target放在它的上面,就可以了,具体看代码注释,后面会为大家贴出list组件和tree组件,具体用法和flex里面的相似,可以设置xml和xmllist作为dataProvider,下面看VScrollBar的代码
package myUI.controls
{
import flash.display.Loader;
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
/**
* 垂直滚动条类
* @author wenjiehou
* */
public class VscrolBar extends Sprite
{
/**
* 向上滚动按钮
* */
private var _upBtn:SimpleButton;//20*20
/**
* 向下滚动按钮
* */
private var _downBtn:SimpleButton;//20*20
/**
* 滚动条
* */
private var _scrollBar:SimpleButton;//20*58
/**可滚动的距离*/
private var _scrollDis:Number;
/**
* 滚动条背景
* */
private var _scrollBg:Loader;
private var _upBtnSkin:Array = ["Resource/assets/icons/xialatiaoxiangshang_b004_over.png",
"Resource/assets/icons/xialatiaoxiangshang_b004_down.png",
"Resource/assets/icons/xialatiaoxiangshang_b004_up.png"];
private var _downBtnSkin:Array = ["Resource/assets/icons/xialatiaoxiangxia_b005_over.png",
"Resource/assets/icons/xialatiaoxiangxia_b005_down.png",
"Resource/assets/icons/xialatiaoxiangxia_b005_up.png"];
private var _scrollBarSkin:Array = ["Resource/assets/icons/xialatiao_b009_over.png",
"Resource/assets/icons/xialatiao_b009_down.png",
"Resource/assets/icons/xialatiao_b009_up.png"];
private var _bgSkin:String = "Resource/assets/icons/xialatiaoditu_g018.png";
/**背景容器,滚动条背景放在这个里面*/
private var _bgContainer:Sprite = new Sprite();
/**前景容器,上下按钮和滚动条都加在这个上面*/
private var _ahContainer:Sprite = new Sprite();
private var _width:Number = 22;
private var _height:Number = 350;
public function VscrolBar(w:Number=22,h:Number=350,upBtnSkin:Array=null,downBtnSkin:Array=null,scrollBarSkin:Array=null,bgSkin:String=null)
{
super();
addChild(_bgContainer);
_ahContainer.x = 1;
_ahContainer.y = 1;
addChild(_ahContainer);
_width = w;
_height = h;
if(upBtnSkin != null)
{
_upBtnSkin = upBtnSkin;
}
if(downBtnSkin != null)
{
_downBtnSkin = downBtnSkin;
}
if(scrollBarSkin != null)
{
_scrollBarSkin = scrollBarSkin;
}
if(bgSkin != null)
{
_bgSkin = bgSkin;
}
_upBtn = new SimpleButton();
_ahContainer.addChild(_upBtn);
_downBtn = new SimpleButton();
_downBtn.y = _height - 22;
_ahContainer.addChild(_downBtn);
_scrollBar = new SimpleButton();
_scrollBar.y = 20;
_ahContainer.addChild(_scrollBar);
_scrollDis = _width - 100;
_scrollBar.addEventListener(MouseEvent.MOUSE_DOWN,onScrollDown);
creatSkin();
}
private function creatSkin():void
{
var bgLoader:Loader = new Loader();
bgLoader.load(new URLRequest(_bgSkin));
bgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,bgLoaded);
var upBtnOverLoader:Loader = new Loader();
upBtnOverLoader.load(new URLRequest(_upBtnSkin[0]));0
_upBtn.overState = upBtnOverLoader;
var upBtnDownLoader:Loader = new Loader();
upBtnDownLoader.load(new URLRequest(_upBtnSkin[1]));
_upBtn.downState = upBtnDownLoader;
var upBtnUpLoader:Loader = new Loader();
upBtnUpLoader.load(new URLRequest(_upBtnSkin[2]));
_upBtn.upState = upBtnUpLoader;
_upBtn.hitTestState = upBtnUpLoader;
var downBtnOverLoader:Loader = new Loader();
downBtnOverLoader.load(new URLRequest(_downBtnSkin[0]));
_downBtn.overState = downBtnOverLoader;
var downBtnDownLoader:Loader = new Loader();
downBtnDownLoader.load(new URLRequest(_downBtnSkin[1]));
_downBtn.downState = downBtnDownLoader;
var downBtnUpLoader:Loader = new Loader();
downBtnUpLoader.load(new URLRequest(_downBtnSkin[2]));
_downBtn.upState = downBtnUpLoader;
_downBtn.hitTestState = downBtnUpLoader;
var scrollBarOloader:Loader = new Loader();
scrollBarOloader.load(new URLRequest(_scrollBarSkin[0]));
_scrollBar.overState = scrollBarOloader;
var scrollBarDloader:Loader = new Loader();
scrollBarDloader.load(new URLRequest(_scrollBarSkin[1]));
_scrollBar.downState = scrollBarDloader;
var scrollBarUloader:Loader = new Loader();
scrollBarUloader.load(new URLRequest(_scrollBarSkin[2]));
_scrollBar.upState = scrollBarUloader;
_scrollBar.hitTestState = scrollBarUloader;
}
private function bgLoaded(e:Event):void
{
_bgContainer.addChild(e.target.loader);
_bgContainer.height = _height;
}
private function onScrollDown(e:MouseEvent):void
{
_scrollBar.addEventListener(MouseEvent.MOUSE_UP,onScrollUp);
_scrollBar.addEventListener(MouseEvent.MOUSE_MOVE,onDragScroll);
}
private function onScrollUp(e:MouseEvent):void
{
_scrollBar.removeEventListener(MouseEvent.MOUSE_UP,onScrollUp);
_scrollBar.removeEventListener(MouseEvent.MOUSE_MOVE,onDragScroll);
}
/**拖动滚动条*/
private function onDragScroll(e:MouseEvent):void
{
trace(e.localY);
}
}
}
其实这个很简单的,我之前写的,有点乱,后面会给大家贴出一整套来,觉得好帮忙推荐一下,或者是顶一个,你的支持是我最大的动力哦