首页 > 解决方案 > 如何使屏幕出现鼠标按下停留在屏幕上?

问题描述

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

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

标签: javaprocessing

解决方案


每当您打电话background()时,您都会清除屏幕。

因为这发生在每一帧都被清除并用(and )draw()重绘时,只有在您单击时才会显示(在事件的短时间内)。textWalktextStopmousePressed()

您可以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,按下鼠标时)和数据如何呈现(例如,使用walkto render in draw())之间进行一些分离


推荐阅读