zoukankan      html  css  js  c++  java
  • AS3 巧用事件api简化鼠标拖动流程

     拖动,按照一般人的定义,拖动就是鼠标按下的时候移动鼠标,这里面有三个过程,分别是按下、移动鼠标和弹起。以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){
        //在这里运行拖动相关的代码
      }
    }
  • 相关阅读:
    react-native ios打包和Android打包
    用create-react-app创建的react项目怎么解决打包体积过大
    react native 新建项目运行报错
    微信分享等配置,微信授权失败讲解
    微信公众号的code,微信授权
    linux 递归删除指定文件
    mariaDB安装 无密码就可以登录、远程访问、及新版本初始化密码
    mysql 可重复插入、创建语句
    redis数据库入门
    Extjs 3.4 同值合并
  • 原文地址:https://www.cnblogs.com/dt1991/p/8046414.html
Copyright © 2011-2022 走看看