为什么处理跳帧

时间:2017-12-21 20:50:49

标签: processing graphics2d frame-rate

这是一个简单的处理程序,它只是在最后四帧中绘制了四个圆圈(我的图形卡的刷新率是60Hz,所以它每秒绘制一次)

但有时由于某种原因它会跳帧,所以我不会看到所有四个圈子。为什么这样做,我该怎么做才能使它不跳帧。

int counter = 1;

void setup(){
  fullScreen();
  background(0);
  fill(255);
}

void draw(){
  background(0);
  if(counter == 57){
    ellipse(383,383,100,100);
  }
  else if(counter == 58){
    ellipse(583,383,100,100);
  }
  else if(counter == 59){
    ellipse(783,383,100,100);
  }
  else if(counter == 60){
    ellipse(983,383,100,100);
    counter = 0;
  }
  counter++;
}

1 个答案:

答案 0 :(得分:0)

考虑每次调用draw()函数时会发生什么:

  • 首先,请致电background(0)以清除旧框架。
  • 然后你检查它是哪一帧,并可能画一个圆圈。

第61帧会发生什么?你将清除旧框架(清除你画出的圆圈),然后不画任何东西。因此,每个圆圈显示1/60秒,这可能是您无法看到的。

要解决您的问题,您需要考虑每帧的内容。考虑删除对background()的调用,以便不清除旧帧,或者每帧可能重绘旧圈。这取决于你想要草图的确切内容。

附注:您无需创建自己的counter变量。 Processing提供了一个frameCount变量来完成这个任务。更多信息可以在the reference找到。