博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AS3 巧用事件api简化鼠标拖动流程
阅读量:6246 次
发布时间:2019-06-22

本文共 1145 字,大约阅读时间需要 3 分钟。

 拖动,按照一般人的定义,拖动就是鼠标按下的时候移动鼠标,这里面有三个过程,分别是按下、移动鼠标和弹起。以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){
    //在这里运行拖动相关的代码   } }

转载于:https://www.cnblogs.com/dt1991/p/8046414.html

你可能感兴趣的文章
内部div自动扩张剩余宽度
查看>>
hbase伪分布式搭建和完全分布式搭建
查看>>
运行命令集
查看>>
在ORACLE里用存储过程定期分割表
查看>>
201621123069 《Java程序设计》第12周学习总结
查看>>
LINQ to Entity(摘录)
查看>>
【leetcode】124. Binary Tree Maximum Path Sum
查看>>
Flex实现 WebQQ那白云草地主题,云朵飘!
查看>>
安装meteor运行基本demo发生错误。
查看>>
Hibernate之QBC .HQL 查询
查看>>
当程序执行时间很快,控制台没显示执行代码和数据库
查看>>
为什么一般的性能测试要在局域进行?
查看>>
Linux 系统目录;
查看>>
[Android Studio 权威教程]断点调试和高级调试
查看>>
阶乘求和之最后一位
查看>>
Eclipse 乱码解决方案(UTF8 -- GBK)
查看>>
网络编程
查看>>
Debian安装Chrome
查看>>
民生银行十五年的数据体系建设,深入解读阿拉丁大数据生态圈、人人BI 是如何养成的?【转】...
查看>>
使用别的电脑连接另一台电脑当中的虚拟机中的kylin项目
查看>>