#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()
).