我正在尝试创建与视频以25帧/秒同步的图形。我试图每40毫秒保存一帧,但是我无法每秒获得25帧,只能保存一张图像。 有人可以帮我吗?
int t1;
int count;
void setup(){
size(400,100);
background(0);
stroke(255);
fill(250);
line(10,0,10,100);
line(260,0,260,100);
for (int i=10;i<251;i+=10){
t1=millis();
while(millis()-t1 < 40) {
count++;
}
rect(10,50,i,10);
//saveFrame("line-####.png");
}
}
void draw(){}
答案 0 :(得分:2)
您的代码中的问题是画布仅在帧结束后才更新,这意味着您的矩形确实存在,但是直到 setup()结束才显示。这就是为什么即使您的代码在绘制一个新矩形之前正确等待40毫秒,在for循环结束之前也不会显示任何内容:在结束帧之前,Processing正在等待完成for循环。
但是,在每秒处理 draw()的过程中被调用了一定的次数,该次数由函数 frameRate()指定(默认值为60 )。
因此,您只需将frameRate设置为25,并在每次调用 draw()时保存图像。
noLoop()用于停止调用 draw(),在这种情况下,一旦全部绘制矩形。
int count;
void setup()
{
frameRate(25);
size(400,100);
background(0);
stroke(255);
fill(250);
line(10,0,10,100);
line(260,0,260,100);
}
void draw()
{
rect(10,50,count,10);
saveFrame("line-####.png");
count += 10;
if(count > 251)
{
noLoop();
}
}