解题思路:
首先移动有四个方向,为:上、右、下、左。
我们需要获取鼠标点下时,获取一次鼠标的位置,即鼠标的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("位置没变");
}
}