我正在处理一个小草图,我正在使用时间函数制作一个“时钟”,并根据毫秒,秒和分钟在画布上绘制椭圆。我正在使用for循环绘制所有的省略号,每个for循环都在自己的方法中。我在draw函数中调用了这些方法。但是由于某些原因,只绘制了第一个被调用的方法,理想情况下我想让它们全部被可视化渲染。
//setup program
void setup() {
size(800, 600);
frameRate(30);
background(#eeeeee);
smooth();
}
void draw(){
milliParticles();
secParticles();
minParticles();
}
//time based particles
void milliParticles(){
for(int i = int(millis()); i >= 0; i++) {
ellipse(random(800), random(600), 5, 5 );
fill(255);
}
}
void secParticles() {
for(int i = int(second()); i >= 0; i++) {
fill(0);
ellipse(random(800), random(600), 10, 10 );
}
}
void minParticles(){
for(int i = int(minute()); i >= 0; i++) {
fill(50);
ellipse(random(800), random(600), 20, 20 );
}
}
答案 0 :(得分:2)
你的第一个方法是唯一一个被执行的方法,因为为了你的for循环停止必须为false的条件总是为真(如果你每次循环都加1,我将始终是> = 0)
我想你想修改你的for循环:
for(int i = int(second()); i >= 0; i--) {
这样,我最初将是0-59,并且将减小直到它为-1,此时i> = 0将为假。然后执行将退出for循环并传递给下一个方法。
我认为这是你的初衷,除非你想让每个方法同时无限期地运行(在这种情况下你应该使用线程)。