如何重画-重新开始处理中的循环

时间:2019-06-16 13:22:33

标签: java loops processing restart redraw

我想重置在草图中运行的“ for”循环,而不使用keyPressed()或mousePressed(),它应该自动发生。

当笔划将覆盖大部分画布区域或笔划超过宽度/高度时,我想重新开始绘制草图。

在上一个草图中,我设置了一个计数器,因为没有“ for”循环,所以它起作用了,但是在这个计数器中,计数器因此而无法工作。

int interval = 5 * 1000;
int time;

float cer;
float big = 14;

void setup() {
  size(595, 842);
  background(255);
}

void draw() {
  strokeWeight(cer);
  stroke(0);
  noFill();
  ellipse(width/2, height/2-100, 200, 200);
  ellipse(width/2, height/2+100, 200, 200);

  cer = cer + big;

  if (cer < width) {
    big = +1;
  }

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

1 个答案:

答案 0 :(得分:0)

只需将cerbig的值恢复到初始状态,就必须在必须重新启动进程时清除背景:

float cer = 0;
float big = 14;
void draw() {

    // [...]

    cer = cer + big;

    if (cer < width) {
        big = +1;
    } else {
        // clear background
        background(255);

        // reset to initial state 
        cer = 0;
        big = 14;
    }

    // [...]
} 

请注意,big = +1;big = 1;相同。我只是将1分配给big
可能您正在搜索big += 1;,它将使big增加1:

float cer = 0;
float big = 0;

void draw() {

    // [...]

    cer = cer + big;

    println(cer, big);
    if (cer < width) {
        big += 1;
    } else {
        background(255);
        cer = 0;
        big = 0;
    }

    // [...]

}