判断鼠标从哪个方向进入盒子

var x = e.offsetX - elem.spec.x/2;//鼠标进入的X坐标-盒子宽度的一半
var y = e.offsetY - elem.spec.y/2;//鼠标进入的y坐标-盒子宽度的一半
var direction = (Math.round((Math.atan2(y, x) * (180/Math.PI) + 180)/90) + 3)%4;

direction=0 从top进入

direction=1 从right进入

direction=2 从bottom进入

direction=3 从left进入

下面解释一下每一步

默认情况下,盒子的原点在左上角位置O,为了方便计算鼠标进入的角度值,可以用鼠标的进入位置的x,y减去盒子的width,height,这样就把原点转换为O',即为盒子的中心,鉴于负数不容易计算,可以全部叫上180度;从图中可以看出

top的角度范围是 45 ~ 135;

right的角度范围是 135 ~ 225;

bottom的角度范围是 225 ~ -315;

left的角度范围是 315 ~ 360 0 ~ 45 ;

除以90之后

top的范围变为 0.5 ~ 1.5

right的范围变为 1.5 ~ 2.5

bottom的范围变为 2.5 ~ 3.5

left的范围变为 3.5 ~ 4   0 ~ 0.5

如果对结果四舍五入处理,那么

在top进入的值将是 1

在right进入的值将是 2

在bottom进入的值将是 3

在left进入的值将是 4 或者 0

那么 + 3取余4之后就变成

在top进入的值将是 0

在right进入的值将是 1

在bottom进入的值将是 2

在left进入的值将是 3

可以发现每个方向都有有唯一的值,后面判断的时候就可以直接使用

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值