我试图弄清楚当鼠标悬停在屏幕上的某个对象上时如何检测处理/处理js。在这种情况下,我画线。似乎处理不能附加一个"听众"对于一个物体,所以我必须通过某种坐标检测来做到这一点 - 但我还没有找到任何好的例子。到目前为止,这是我的代码:
void draw() {
for(int i = 0; i < commLength; i ++) {
...
line(circ.x, circ.y, circ.x + dir.x, circ.y + dir.y);
}
}
void mouseOver(){
//need to detect if mouse is over one of the lines.
}
答案 0 :(得分:2)
我这样做的方法是检查鼠标是否在距离线的起点和终点一定距离内:
boolean mouseIsOverLine(float x1, float y1, float x2, float y2) {
float d = dist(x1, y1, x2, y2);
float d1 = dist(x1, y1, mouseX, mouseY);
float d2 = dist(x2, y2, mouseX, mouseY);
// distance between vertices must be similar to sum of distances from each vertex to mouse
if (d1 + d2 < d + MOUSE_OVER_LINE_DISTANCE_THRESHOLD) {
return true;
}
return false;
}
该行从(x1, y1)
到(x2, y2)
。此图像粗略地显示了一个返回false(红线)的示例和一个返回true(绿线)的示例,具体取决于MOUSE_OVER_LINE_DISTANCE_THRESHOLD
的值。在每种情况下,鼠标坐标都是橙色点。