js判断鼠标点击并移动的方向。

解题思路:
   首先移动有四个方向,为:上、右、下、左。
   我们需要获取鼠标点下时,获取一次鼠标的位置,即鼠标的X轴和Y轴
  可能遇到的问题:
   我们在点击并移动鼠标时,无法保证我们是以直线移动,可能会出现向左移动时Y点可能会上下有所偏移。
  问题解决办法:
   我们可以将X轴移动的距离和Y轴的移动距离进行对比做一个模糊判断,当X轴的距离大于Y轴的移动距离时,我们判定
   为X轴的移动,将Y轴的移动忽略掉
   所需判断的方向:
    上--左上--右上
    下--左下--右下
    左--上左--下左
    右--上右--下右
  所需变量及方法:
   Math.abs(取负数的绝对值)返回正数
   首先我们声明五个变量:var MouseY = 0,MouseX = 0,changeX = 0,changeY = 0;

   var X = 0,Y = 0;
   MouseY 赋值的是鼠标点下那一刻的Y轴座标
   changeY 赋值的是鼠标松开那一刻的Y轴座标
   Y赋值的是 changeY - MouseY 的值作为长度比较

   MouseX 赋值的是鼠标点下那一刻的X轴座标
   changeX 赋值的是鼠标松开那一刻的X轴座标
   X 赋值的是 changeX - MouseX 的值作为长度比较

 

上代码:

var MouseY = 0,MouseX = 0,changeX = 0,changeY = 0;
        var X = 0,Y = 0;
        function mouseDown(ev){
            var Event = ev || event;

            MouseX = Event.clientX;
            MouseY = Event.clientY;
        }
        function mouseUp(ev){
            var Event = ev || event;
            changeX = Event.clientX;
            changeY = Event.clientY;

            X = changeX - MouseX;
            Y = changeY - MouseY;

            if( ( ( (X > 0 && Y < 0) && (X > Math.abs(Y)) ) || ( X > 0 && Y > 0 && X > Y) || (X > 0 && Y == 0)) ){//右移动
                console.log("右移动");
            }else if( ( (Y > 0 && X < 0) && (Y > Math.abs(X)) ) || ( Y > 0 && X > 0 && Y > X ) || (Y > 0 && X == 0) ){//下移动
                console.log("下移动");
            }else if( ( (X < 0  && Y > 0) && (Math.abs(X) > Y) ) || ( (X < 0 &&  Y < 0)  && (Math.abs(X) > Math.abs(Y)) ) || (X < 0 && Y == 0) ){//左移动
                console.log("左移动");
            }else if( ( (Y < 0 && X < 0) && Math.abs(Y) > Math.abs(X) ) || ( (Y < 0 && X > 0) &&  (Math.abs(Y) > X ) ) || (Y < 0 && X == 0) ){//上移动
                console.log("上移动");
            }else if(X == 0 && Y == 0){
                console.log("位置没变");
            }
            
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章