canvas判定重叠区点击了谁

假设 arr=[graphical-1, graphical-2, graphical-3]; arr存储了3个多边型的路径

图形显示顺序是3>2>1    3出现在顶层,1在最底层

鼠标点击的时候 让arr倒序循环判断 e.offsetX,和e.offsetY是否在多边形中 第一次为true时的元素就是被点击到的

for(let i = arr.length; i >0; i --)

    ctx.beginPath();

     arr[i].forEach( (point) =>{ ctx.lineTo(point.x, point.y) });

     ctx.closePath();

     if(cxt.isPointInPath(e.offsetX, e.offsetY)

     {

            console.log("被点击的图形路径",arr[i]);

            break;

      }

}

如果3和2完全覆盖了1 上面的操作永远也点击不到1,怎么办呢?

鼠标滑动的时候遍历出所有路径中出现移动点的图形 

对arr重新排序遍历出的图形轮番按一定时间间隔出现在数组的末尾

对arr所有图形重绘 点击的时候数组的最后一个元素就是被点击的图形

点击完成后使用原始arr重新绘制图形

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值