如何重绘 - 在 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");
}
}
只需将 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;
}
// [...]
}
我想在不使用 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");
}
}
只需将 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;
}
// [...]
}