处理 - 对象上的mouseOver

时间:2012-02-12 23:19:56

标签: processing processing.js

我试图弄清楚当鼠标悬停在屏幕上的某个对象上时如何检测处理/处理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.
}

1 个答案:

答案 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的值。在每种情况下,鼠标坐标都是橙色点。

enter image description here