此 for 循环不会绘制矩形,但会写入控制台
This for loop won't draw rectangles, but will write to console
for (int i = 0; i < 50; i++){
noStroke();
fill(50,50,50);
rect(0,0,100,100,i);
System.out.println(i);
delay(100);
}
这是for循环,它会写入数字0到50,然后画一个矩形。目标是让它在角上绘制半径增加的矩形。它不执行 rect(),但执行 System.out.println();。这是在java处理中写的。
不要使用 delay()
函数创建动画。
在 draw()
函数完成之前(或者如果您没有使用 draw()
函数,则在代码结束之前,不会在屏幕上绘制任何内容)。一切都被绘制到屏幕外缓冲区,然后当 draw()
函数完成时缓冲区被一次性绘制到屏幕。
所以实际上您正在向离屏缓冲区绘制一个矩形,等待 100 毫秒,然后向离屏缓冲区绘制另一个矩形,等待 100 毫秒,然后绘制另一个矩形,依此类推。在所有等待完成之前,您实际上不会在屏幕上看到任何内容。
如果要创建动画,请不要使用循环。相反,使用 draw()
函数以及您递增的草图级变量(或仅使用预定义的 frameCount
变量)。
另一个问题是您只是一遍又一遍地绘制相同颜色的矩形。您正在绘制一个灰色矩形,然后在其顶部绘制一个略小的灰色矩形,然后在其顶部绘制一个略小的矩形,依此类推。所以你永远不会真正看到较小的矩形,因为它们融入了你正在绘制的第一个矩形。
运行这个程序可以更好的理解是怎么回事:
noStroke();
fill(50,50,50);
rect(0,0,100,100,0);
fill(255, 0, 0);
rect(0,0,100,100,10);
fill(0, 255, 0);
rect(0,0,100,100,20);
for (int i = 0; i < 50; i++){
noStroke();
fill(50,50,50);
rect(0,0,100,100,i);
System.out.println(i);
delay(100);
}
这是for循环,它会写入数字0到50,然后画一个矩形。目标是让它在角上绘制半径增加的矩形。它不执行 rect(),但执行 System.out.println();。这是在java处理中写的。
不要使用 delay()
函数创建动画。
在 draw()
函数完成之前(或者如果您没有使用 draw()
函数,则在代码结束之前,不会在屏幕上绘制任何内容)。一切都被绘制到屏幕外缓冲区,然后当 draw()
函数完成时缓冲区被一次性绘制到屏幕。
所以实际上您正在向离屏缓冲区绘制一个矩形,等待 100 毫秒,然后向离屏缓冲区绘制另一个矩形,等待 100 毫秒,然后绘制另一个矩形,依此类推。在所有等待完成之前,您实际上不会在屏幕上看到任何内容。
如果要创建动画,请不要使用循环。相反,使用 draw()
函数以及您递增的草图级变量(或仅使用预定义的 frameCount
变量)。
另一个问题是您只是一遍又一遍地绘制相同颜色的矩形。您正在绘制一个灰色矩形,然后在其顶部绘制一个略小的灰色矩形,然后在其顶部绘制一个略小的矩形,依此类推。所以你永远不会真正看到较小的矩形,因为它们融入了你正在绘制的第一个矩形。
运行这个程序可以更好的理解是怎么回事:
noStroke();
fill(50,50,50);
rect(0,0,100,100,0);
fill(255, 0, 0);
rect(0,0,100,100,10);
fill(0, 255, 0);
rect(0,0,100,100,20);