Как сделать так, чтобы экран отображался при нажатии мыши, оставаясь на экране?

#java #processing

Вопрос:

Когда я нажимаю «Экран», загорается экран «Стоп», а затем он возвращается на экран «Прогулка». Как мне заставить его оставаться на экране остановки, пока я снова не щелкну мышью?

 boolean walk;
String textStop;
String textWalk;
float x; //positions
float y; //positions

void setup() {
  size (400,500);
  stop = false;
  textStop = "STOP!";
  textWalk = "WALK!";
}

void draw() {
  background(0,255,0);
  text(textWalk, x , y);
  x = 150;
  y = 250;
  textSize(40);  
}

void mousePressed() {
  if (stop);{
   background(255,0,0);
   text(textStop, x , y);
   }
   
   
 
} ```
 

Ответ №1:

Всякий раз, когда вы звоните background() , вы очищаете экран.

Поскольку это происходит в draw() каждом кадре, он очищается и перерисовывается с textWalk помощью (и textStop ), отображается только при нажатии (на короткое время mousePressed() события).

Для этого вы можете использовать walk переменную. Я вижу, вы используете stop , хотя это и не объявлено. Они кажутся противоположными друг другу в контексте, так почему бы не упростить и не использовать только один. Конечно, вы можете закодировать это if/else , чтобы переключить значение, или вы можете просто использовать !(логический оператор «нет»):

 void mousePressed() {
  walk = !walk;
}
 
  • когда walk происходит true рендеринг textWalk
  • в противном случае ( else ) визуализируйте textStop

что-то вроде:

 if(walk){
   text(textWalk, x , y);
}else{
   text(textStop, x , y);
}
 

Вот измененная версия вашего кода с использованием примечаний выше:

 boolean walk = true;
String textStop = "STOP!";
String textWalk = "WALK!";
float x = 150; //positions
float y = 250; //positions

void setup() {
  size (400,500);
  textSize(40);  
}

void draw() {
  if(walk){
    background(0,255,0);
    text(textWalk, x , y);
  }else{
    background(255,0,0);
    text(textStop, x , y);
  }
}

void mousePressed() {
  walk = !walk;
}
 

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

Кроме того, в будущем это может помочь другим программам немного разделить данные, которые изменяются при событиях (например walk , при нажатии мыши), и то, как эти данные отображаются (например, при использовании walk для визуализации draw() ).