【发布时间】:2019-06-18 20:59:59
【问题描述】:
我正在尝试显示鼠标是否悬停在形成十字形状的两条线中的任何一条上但不是全部
const x1 = 50;
const y1 = 50;
const x2 = 100;
const y2 = 100;
const xdiff = x2 - x1;
const ydiff = y2 - y1;
function drawX(x, y) {
ctx.beginPath();
ctx.moveTo(x - xdiff, y - ydiff);
ctx.lineTo(x + xdiff, y + ydiff);
ctx.stroke();
ctx.moveTo(x + xdiff, y - ydiff);
ctx.lineTo(x - xdiff, y + ydiff);
ctx.stroke();
}
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");
drawX(x1,y1);
function myFunction(e) {
const x = e.clientX;
const y = e.clientY;
//const coor = "Coordinates: (" + x + "," + y + ")";
const overShape = () => ( (x > x1 && x < (x1 +xdiff)) && (y > y1 && y < (y1 +ydiff)) ) ;
console.log('I am over X, ', overShape() )
}
<canvas id="myCanvas" width="300" height="150" onmousemove="myFunction(event)" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
【问题讨论】:
-
这篇文章介绍了碰撞检测的一般技术,这就是你正在尝试的:developer.mozilla.org/en-US/docs/Games/Techniques/…
-
另外请注意,既然你没有开始新的路径,你实际上是在第一行划了两次。
-
@Kaiido 酷,不知道有这个功能
-
这不会改变任何事情,就像您在接受答案的函数中设置阈值一样,您也可以使用 isPointInStroke 设置它:jsfiddle.net/b5gt1q4u
标签: javascript html canvas mousemove