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

How to Calculate a particular area using MouseClicked () method in Processing?

在我的window里面有一个圆圈。我已经实现了 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;
    }
}

您没有检查鼠标是否在圆圈中。您可以使用 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;
      }
   }
}