如何使屏幕出现且 mousePressed 停留在屏幕上?

How to make the screen appear with mousePressed stay on the screen?

当我点击屏幕时,停止屏幕闪烁,然后又回到行走屏幕。如何让它一直停留在“停止”屏幕上,直到我再次单击鼠标?

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);
   }
   
   
 
} ```

每当您调用 background() 时,您都在清除屏幕。

因为这发生在 draw() 中,每一帧都被清除并使用 textWalk(和 textStop)重新绘制)仅在您单击时显示(在 [=17 的短暂持续时间内) =] 事件).

您可以为此使用 walk 变量。我看到你使用 stop 虽然它没有声明。它们在上下文中似乎彼此相反,所以为什么不简化并只使用一个。当然,您可以编写此 if/else 来切换值,或者您可以简单地使用 !(logical not) operator:

void mousePressed() {
  walk = !walk;
}
  • walktrue 时渲染 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 按下鼠标时)和数据的呈现方式(例如使用 walkdraw())

中呈现