【问题标题】:How to make the screen appear with mousePressed stay on the screen?如何使屏幕出现鼠标按下停留在屏幕上?
【发布时间】:2021-10-08 19:18:45
【问题描述】:

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

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

【问题讨论】:

    标签: java processing


    【解决方案1】:

    每当您拨打background() 时,您都在清除屏幕。

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

    您可以为此使用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鼠标按下)和数据如何呈现(例如使用walk呈现draw())

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-20
      相关资源
      最近更新 更多