Я не уверен, правильно ли я понимаю ваш вопрос, но, исходя из него и вашего комментария под ним, я понимаю, что вы хотите, чтобы текст отображался при нажатии кнопки один раз и скрывался при нажатии кнопки. щелкнул снова. Если это так, этот код должен работать для вас:
boolean drawText = false;
void setup(){
size(800,600);
}
void draw(){
background(0);
noStroke();
fill(245, 27, 27, 151);
ellipse(110,110,120,120);
if(dist(mouseX,mouseY,110,110)<60){
cursor(HAND);
} else {
cursor(ARROW);
}
if (drawText) {
fill(#FFFF00);
text("Hi!", 110, 110);
}
}
void mousePressed() {
if (mouseButton == LEFT && dist(mouseX,mouseY,110,110)<60) {
drawText = !drawText;
}
}
Итак, когда кнопка нажата сейчас, drawText меняется на противоположный: если раньше это было true
, то он установлен на false
и наоборот. Таким образом, нажатие кнопки делает текст видимым, а повторное нажатие делает текст снова невидимым.
Редактировать: еще один способ понять ваш вопрос
Другой способ понять ваш вопрос - это то, что вы хотите текст должен отображаться только после двойного щелчка по кнопке. В этом случае вы можете использовать функцию evt.getCount()
внутри mousePressed
. Он повторяется 1 после одного клика, 2 после двойного щелчка и так далее. Вот некоторый код для этой работы:
boolean drawText = false;
void setup(){
size(800,600);
}
void draw(){
background(0);
noStroke();
fill(245, 27, 27, 151);
ellipse(110,110,120,120);
if(dist(mouseX,mouseY,110,110)<60){
cursor(HAND);
} else {
cursor(ARROW);
}
if (drawText) {
fill(#FFFF00);
text("Hi!", 110, 110);
}
}
void mousePressed(MouseEvent evt) {
if (evt.getCount() == 2) { // detect double click
if (mouseButton == LEFT && dist(mouseX,mouseY,110,110)<60) {
drawText = !drawText;
}
}
}