AS3自定义滚动条需要注意的一点.非常容易出错哦.

AS3自定义滚动条需要注意的一点.非常容易出错哦.非常重要.

 

一个影片剪辑

通过添加鼠标按下,鼠标弹起,鼠标移动的事件监听来做 滚动条,

为什么移动过快,或者拖动过程中会中断啊...给一个边界的限制的时候,拖动过快也会拖出边界~ 郁闷哇~

以前直接在按钮上添加代码onPress什么的时候貌似没这问题。  是这样的情况吧?

 

如果你的代码是这样:

 

private function sliderBarMouseDownHander(evt:MouseEvent):void {
                     _sliderBarMoving=true;
                     _sliderBarMouseX=evt.localX;
              }
              private function sliderBarMouseUpHander(evt:MouseEvent):void {
                     _sliderBarMoving=false;
              }
              private function sliderBarMouseMoveHander(evt:MouseEvent):void {
                     if (_sliderBarMoving) {
                            _sliderBar.x+=evt.localX-_sliderBarMouseX;
                     }
              }

效果很不好,很容易拖着拖着就松开sliderBar了,

 

 

解决办法:

这几个事件的用法如下:

首先初始化的时候给被拖动的物体假设实例名是 thumb 添加事件监听

     thumb.addEventListener( MouseEvent.MOUSE_DOWN, onMouseDown );
     thumb.addEventListener( MouseEvent.MOUSE_UP,onMouseUp );

其次是事件处理函数



  private function onMouseDown( e : MouseEvent ) : void
  {
   stage.addEventListener( MouseEvent.MOUSE_MOVE, onMoveHandler );
   stage.addEventListener( MouseEvent.MOUSE_UP, onMouseUp );
  }
  
  private function onMouseUp( e : MouseEvent ) : void
  {
   if( stage.hasEventListener( MouseEvent.MOUSE_MOVE ) )
   {
    stage.removeEventListener( MouseEvent.MOUSE_MOVE, onMoveHandler );
   }
   if( stage.hasEventListener( MouseEvent.MOUSE_UP ) )
   {
    stage.removeEventListener( MouseEvent.MOUSE_UP, onMouseUp );
   }
  }

  private function onMoveHandler( e : MouseEvent ) : void
  {
   thumb.x = mouseX;
   thumb.y = mouseY;
  }
..............
为何给stage 添加MOUSE_MOVE 事件,用了明了

出处 博客园 http://www.cnblogs.com/Mirage/archive/2008/08/27/1277473.html?updated=1

感谢:sprite115

 

 

来自:http://bbs.blueidea.com/viewthread.php?tid=2882156&pid=4183948&page=1&extra=page%3D1#pid4183948

7楼有源文件,去拿吧.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值