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处理编写的。
答案 0 :(得分:2)
请勿使用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);