在每个框架中显示不同的形状(处理)

时间:2015-01-13 07:47:16

标签: processing frames

我有一个代码,在鼠标按下时,会显示一个围绕圆圈移动的圆圈。

我希望这会自动发生,即。

帧号图1显示了圆圈号。 1 框架号图2显示了圆圈号。 2 ... 框架号图8显示了圆圈号。 8 框架号图9显示了圆圈号。 1

非常感谢。

这是我的代码。

int value = 0;
void setup () {
  size (600, 600);
}

void draw () {
  if (value == 0) {
    background(255, 255, 255);
  } else if (value == 1) {
        background(255, 255, 255);
    fill (0);
    ellipse (300, 190, 20, 20);//1
  } else if (value == 2) {
        background(255, 255, 255);
    fill (0);
    ellipse (378, 222, 20, 20);
  } else if (value == 3) {
        background(255, 255, 255);
    fill (0);
    ellipse (410, 300, 20, 20);
  } else if (value == 4) {
        background(255, 255, 255);
    fill (0);
    ellipse (378, 378, 20, 20);
  } else if (value == 5) {
        background(255, 255, 255);
    fill (0);
    ellipse (300, 410, 20, 20);
  } else if (value == 6) {
        background(255, 255, 255);
    fill (0);
    ellipse (222, 378, 20, 20);
  } else if (value == 7) {
        background(255, 255, 255);
    fill (0);
      ellipse (190, 300, 20, 20);
  } else if (value == 8) {
        background(255, 255, 255);
    fill (0);
    ellipse (222, 222, 20, 20); //8 circles
  }
}



void mousePressed() {
  if (mouseButton == LEFT) {
    value = value + 1;
  } else if (mouseButton == RIGHT) {
    value = value - 1;
  } 

  if (value > 8) {
    value = 1;
  } 
  if (value < 1) {
    value = 8;
  }
}

1 个答案:

答案 0 :(得分:1)

这是循环许多不同帧的方法:

int loopLength = 8;
void setup () {
  size (600, 600);
}

void draw () {
  background(255, 255, 255);
  fill (0);
  switch (frameCount % loopLength) {
  case 0: 
    ellipse (300, 190, 20, 20); 
    break;
  case 1: 
    ellipse (378, 222, 20, 20); 
    break;
  case 2: 
    ellipse (410, 300, 20, 20); 
    break;
  case 3: 
    ellipse (378, 378, 20, 20); 
    break;
  case 4: 
    ellipse (300, 410, 20, 20); 
    break;
  case 5: 
    ellipse (222, 378, 20, 20); 
    break;
  case 6: 
    ellipse (190, 300, 20, 20); 
    break;
  case 7: 
    ellipse (222, 222, 20, 20); 
    break;
  }
}

每个帧的公共代码(调用背景和填充)发生在switch()之前。它运行的方式是每一帧。

你可以使用很多if()语句而不是switch,但这可能看起来更干净。

使用开关时,您不需要包含每个案例。如果您想要空白帧,则可以删除一个或多个案例。

如果您的循环长度为8,并且您使用的范围超出0 - 7范围(例如33),那么这些情况将无法运行。

每个案件必须以休息结束。如果缺少break,则还会评估下一个案例的代码。