2012-02-12 1 views
1

마우스가 화면의 특정 객체 위에있을 때 처리/처리 중 감지하는 방법을 알아 내려고하고 있습니다. 이 경우 선을 그립니다. 프로세싱이 객체에 "청취자"를 붙일 수없는 것처럼 보입니다. 그래서 어떤 종류의 좌표 감지로 이것을해야 할 것입니다. 그러나 이것에 대한 좋은 예는 없습니다. 이것은 지금까지 내 코드입니다 :처리 - mouseOver on objects

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. 
} 

답변

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)으로 이동합니다. 이 이미지는 대략 MOUSE_OVER_LINE_DISTANCE_THRESHOLD 값에 따라 false (빨간색 선)와 true (녹색 선)를 반환하는 예제를 대략적으로 보여줍니다. 마우스 좌표는 각 경우의 주황색 점에 있습니다.

enter image description here