AS3自定义滚动条需要注意的一点.非常容易出错哦.非常重要.
一个影片剪辑
通过添加鼠标按下,鼠标弹起,鼠标移动的事件监听来做 滚动条,
为什么移动过快,或者拖动过程中会中断啊...给一个边界的限制的时候,拖动过快也会拖出边界~ 郁闷哇~
以前直接在按钮上添加代码onPress什么的时候貌似没这问题。 是这样的情况吧?
如果你的代码是这样:
_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楼有源文件,去拿吧.