如何在 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;
}
}
}
在我的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;
}
}
}