Как перерисовать - перезапустить цикл в обработке - PullRequest
1 голос
/ 16 июня 2019

Я хотел бы сбросить цикл «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 голосов
/ 16 июня 2019

Просто установите значения cer и big в исходное состояние, и вам нужно очистить фон, когда процесс должен быть перезапущен:

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

    // [...]

}
...