小小菜鸟的web菜园子

web开发学习。好记性不如烂笔头。每天进步一点点!

导航

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楼有源文件,去拿吧.

 

posted on 2008-08-28 17:34  『小小菜鸟』  阅读(1725)  评论(0编辑  收藏  举报