Java 如何在处理过程中使用计数器或倒计时清除/重置画布?

Java 如何在处理过程中使用计数器或倒计时清除/重置画布?,java,processing,counter,redraw,Java,Processing,Counter,Redraw,我想知道如何设置重置循环: 当draw()正在进行时,我想清除画布,这样我就可以开始一次又一次地在干净的画布上绘制 (我不想使用keyPressed()或mousePressed(),它必须是自动的) 谢谢你的建议 您只需再次清除背景,例如当您按键时: void keyPressed(){ background(255, 60, 80); } 你也可以在其他事件上做同样的事情(时间量、响度等) 下面是一个基于您的代码的示例,该代码每3秒清除一次背景: import ddf.minim.*;

我想知道如何设置重置循环: 当draw()正在进行时,我想清除画布,这样我就可以开始一次又一次地在干净的画布上绘制


(我不想使用keyPressed()或mousePressed(),它必须是自动的)


谢谢你的建议

您只需再次清除背景,例如当您按键时:

void keyPressed(){
  background(255, 60, 80);
}
你也可以在其他事件上做同样的事情(时间量、响度等)

下面是一个基于您的代码的示例,该代码每3秒清除一次背景:

import ddf.minim.*;
Minim minim;
AudioInput in;

//3s as millis
int interval = 3 * 1000;
int time;

void setup() {
  fullScreen();
  background(255, 60, 80);

  time = millis();

  minim = new Minim(this);
  //minim.debugOn ();
  in = minim.getLineIn(Minim.MONO, 100);
}

void draw() {
  float soundlevel;
  float distance_top = random(100);

  soundlevel = in.mix.get(0);

  stroke(255, random(90, 255));
  line(0, distance_top + soundlevel * 4000, width, distance_top + soundlevel * 1000);
  line(0, distance_top + soundlevel * 1000, width, distance_top + soundlevel * 4000);

  if(millis() - time >= interval){
    // clear background
    background(255, 60, 80);
    // reset time for next interval
    time = millis();
    // debug
    println("=========================>  tick");
  }

}
有关延迟的millis()的更多信息,请参阅

另一个选项是使用进行基于框架的计算。 例如,如果草图的
帧速率约为60 fps,并且您希望大约每3秒清除一次,则可以检查180(3*60)帧的倍数是否与


请添加您迄今为止尝试过的代码。我不想使用keyPressed()或Mouseppressed()。它必须是自动的,这就是我搜索计数器的原因。上面较长的代码段每3秒执行一次。你试过了吗?
import ddf.minim.*;
Minim minim;
AudioInput in;

//3s as millis
int interval = 3 * 1000;
int time;

void setup() {
  fullScreen();
  background(255, 60, 80);

  time = millis();

  minim = new Minim(this);
  //minim.debugOn ();
  in = minim.getLineIn(Minim.MONO, 100);
}

void draw() {
  float soundlevel;
  float distance_top = random(100);

  soundlevel = in.mix.get(0);

  stroke(255, random(90, 255));
  line(0, distance_top + soundlevel * 4000, width, distance_top + soundlevel * 1000);
  line(0, distance_top + soundlevel * 1000, width, distance_top + soundlevel * 4000);

  if(millis() - time >= interval){
    // clear background
    background(255, 60, 80);
    // reset time for next interval
    time = millis();
    // debug
    println("=========================>  tick");
  }

}
import ddf.minim.*;
Minim minim;
AudioInput in;

void setup() {
  //fullScreen();
  size(300,300);
  background(255, 60, 80);

  minim = new Minim(this);
  //minim.debugOn ();
  in = minim.getLineIn(Minim.MONO, 100);
}

void draw() {
  float soundlevel;
  float distance_top = random(100);

  soundlevel = in.mix.get(0);

  stroke(255, random(90, 255));
  line(0, distance_top + soundlevel * 4000, width, distance_top + soundlevel * 1000);
  line(0, distance_top + soundlevel * 1000, width, distance_top + soundlevel * 4000);

  if(frameCount % (3 * 60) == 0){
    // clear background
    background(255, 60, 80);
    // debug
    println("=========================>  tick");
  }

}