如何使用Processing中的MouseClicked()方法计算特定区域?

时间:2015-10-31 17:38:19

标签: arduino mouseevent processing

在我的窗口中有一个圆圈。我已经实现了void MouseClicked()方法以使鼠标单击事件生效。这意味着只需在圆圈内单击即可更改圆圈的颜色并执行相应的操作。

但问题是无论我点击哪里(甚至在圆圈外),它都会改变圆圈的颜色。所以我理解mouseClicked()方法不稳定。我该如何解决这个问题?

我处理的代码:

int colorValue = 0;
void setup() { 
    size(450, 255); 
    background(204);
} 

void draw() {         
    fill(colorValue);
    ellipse(56, 46, 55, 55);
}
void mouseClicked() {
    if (colorValue == 0) {
        colorValue = 255;
    } else {
        colorValue = 0;
    }
}

1 个答案:

答案 0 :(得分:1)

您没有检查鼠标是否在圆圈中。您可以使用dist()函数来帮助:

int colorValue = 0;
float circleX = 56;
float circleY = 46;
float circleR = 55;

void setup() { 
  size(450, 255); 
  background(204);
  ellipseMode(RADIUS);
 } 

void draw() {         
   fill(colorValue);
   ellipse(circleX, circleY, circleR, circleR);
}
void mouseClicked() {
   if(dist(mouseX, mouseY, circleX, circleY) < circleR){
      if (colorValue == 0) {
         colorValue = 255;
      } else {
         colorValue = 0;
      }
   }
}