Сделать мой эллипс кнопкой для отображения некоторых данных в том же окне? - PullRequest
0 голосов
/ 04 апреля 2020

Здравствуйте, я пытаюсь сделать форму моего эллипса кнопкой, чтобы при двойном щелчке на нем отображалось мгновенное представление данных. Я создал некоторый код, но он не функционирует на 100%, и было бы неплохо, если бы кто-нибудь мне помог.

Код:

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 = true;
  } else if (mouseButton == LEFT && dist(mouseX,mouseY,110,110)<60){
   drawText = false; 
  }
}

1 Ответ

0 голосов
/ 08 апреля 2020

Я не уверен, правильно ли я понимаю ваш вопрос, но, исходя из него и вашего комментария под ним, я понимаю, что вы хотите, чтобы текст отображался при нажатии кнопки один раз и скрывался при нажатии кнопки. щелкнул снова. Если это так, этот код должен работать для вас:

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