AS3 巧用事件api简化鼠标拖动流程
2017-12-16 13:51
302 查看
拖动,按照一般人的定义,拖动就是鼠标按下的时候移动鼠标,这里面有三个过程,分别是按下、移动鼠标和弹起。以stage为例,大家的实现步骤通常如下: (PS:此处不讨论startDrag和stopDrag的使用,因为这个方法过于局限,诸如切水果一类的,startDrag能做的到么) 第一步,监听鼠标按下事件,并开始监听移动,同时为了让弹起时不再拖动,我们还要监听弹起事件:
stage.addEventListener(MouseEvent.MOUSE_DOWN, stageMouseDownHandler
function stageMouseDownHandler(event:MouseEvent):void{
stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
}
第二步,在stageMouseMoveHandler里执行拖动的操作
function stageMouseMoveHandler(event:MouseEvent):void{
//在这里运行拖动相关的代码
}
第三步,stageMouseUpHandler里移除按下时的监听:
function stageMouseUpHandler(event:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
}
这样的代码看起来可不是一般的繁琐,如果项目的代码量大了(小项目的代码量有时也不少),这么写容易让程序结构变乱,可读性严重下降。对于大项目来说,我们还可以封装一下,但对于中小项目来说,封装可能都嫌麻烦。
其实,借助鼠标事件的一个api,以上三步完全可以简化为一步:
stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler); function stageMouseMoveHandler(event:MouseEvent):void{ if(event.buttonDown){ //在这里运行拖动相关的代码 } }
相关文章推荐
- 拖动div时鼠标mouseup事件丢失
- 捕捉鼠标拖动和鼠标移动事件
- 【Cocoa(mac) Application 开发系列之四】动作编辑器(Cocos2dx)制作流程详解及附上响应鼠标滚轴事件、反转坐标系、导入/创建资源目录等知识点代码!
- Arc gis api for js 学习随笔之绑定事件鼠标动作
- flash 绘图API:鼠标拖动小球
- Dhtml:用ondrag事件简单的实现鼠标拖动物件.
- 鼠标拖动事件_js效果(深入分析)
- AS3自定义鼠标光标后应注意鼠标事件捕获问题
- 前端鼠标拖动事件冲突
- C#引用CefSharp并屏蔽鼠标右键和禁止拖动放置事件
- 解决dragsort鼠标拖动与onclick事件共存
- AS3: Sprite的鼠标经过事件,Tween缓动alpha的简单例子。
- 鼠标拖动事件_js效果(深入分析)
- as3用鼠标拖动图形拼图——灰常简单的教程
- Unity NGUI的拖动效果,并在鼠标松开时执行某个事件
- wnidows api 模拟鼠标拖动
- [ActionScript 3.0] AS3 用于拖动对象时跟随鼠标的缓动效果
- HTML--如何实现通过鼠标事件拖动页面图像(代码)
- C#鼠标任意拖动PictureBox等控件(使用API ReleaseCapture SendMessage)
- Java程序中取消窗口标题栏以及边框,并使窗口可以相应鼠标事件,被鼠标拖动;设置JFrame背景色