我们都知道如何在 Processing 中画线。
但是当我们画一条线时,这条线会立即显示出来。
如果我想亲眼目睹绘制过程,即看到线条向前移动,逐渐完成一整条线。
这就是我想要实现的:画几条线和曲线,最终变成某种图案。
那么如何实现呢?使用数组?
非常感谢。
我们都知道如何在 Processing 中画线。
但是当我们画一条线时,这条线会立即显示出来。
如果我想亲眼目睹绘制过程,即看到线条向前移动,逐渐完成一整条线。
这就是我想要实现的:画几条线和曲线,最终变成某种图案。
那么如何实现呢?使用数组?
非常感谢。
在处理过程中,所有的绘图都发生在一个循环中。像您描述的那样创建动画序列的一种简单方法是使用 frameCount 来驱动它,并且使用模数函数 % 是创建循环的好方法。例如,沿 x 轴设置动画:
void draw() {
float x = 50;
float y = 50;
float lineLength = 50;
int framesToAnimate = 60;
line(x,y,x+float(frameCount % framesToAnimate)/framesToAnimate*lineLength, y);
}
注意:如果您不强制转换/转换为浮点数,将会发生奇怪的事情
我经常使用它来为其他功能设置动画,例如颜色。
fill(color(127 + sin(float(frameCount)/90)*127, 0, 0, 127));
如果您想更高级,请使用PVector设置矢量和坐标。Daniel Shiffman 的网站上有一个很好的教程。
如果要设置独立于帧速率的动画,可以使用 mills() 代替。这将返回自草图开始以来的当前时间,因此您可以设置在给定时间内以秒为单位发生的事情。例如:
long initialTime;
void setup(){
size(400,200);
initialTime = millis();
}
void draw() {
float x = 50;
float y = 50; //set the multiplier to adjust speed
line(x,y,x+(millis()-initialTime)*0.01, y); //10 px/sec
line(x,y+50,x+(millis()-initialTime)*0.05, y+50); //50 px/sec
line(x,y+100,x+(millis()-initialTime)*0.001, y+100); // 1 px/sec
}
还有一些动画库,我已经看到了一些令人印象深刻的结果,但我从未使用过它们。这里有一个清单。