如何重绘 - 在 Processing 中重新启动循环

How to redraw - restart a loop in Processing

我想在不使用 keyPressed() 或 mousePressed() 的情况下重置草图中 运行 的 "for" 循环,它应该会自动发生。

当笔划将覆盖大部分 canvas 区域或超过 width/height 时,我想重新开始草图。

在之前的草图中,我设置了一个计数器,它可以正常工作,因为没有 "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");
  }
}

只需将 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;
    }

    // [...]

}