AS3.0写得滚动条

想写一套组件给大家,本来想从自定义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);
  }
 }
}

其实这个很简单的,我之前写的,有点乱,后面会给大家贴出一整套来,觉得好帮忙推荐一下,或者是顶一个,你的支持是我最大的动力哦

转载于:https://www.cnblogs.com/wenjiehou/archive/2013/05/20/3088986.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值