在每一帧中显示不同的形状(处理中)

Show a different shape in each frame (Processing)

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

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

帧号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;
  }
}

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

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()之前。这样 运行s 就是每一帧。

您可以使用很多 if() 语句来代替 switch,但这可能看起来更干净。

使用 switch 时,不需要包含所有情况。如果你想要空白框,你可以只删除一个或多个案例。

如果您的循环长度为 8,并且您使用 0 - 7 范围之外的案例(比如 33),这些案例将不会 运行。

每个案例都必须以 break 结尾。当缺少 break 时,下一个案例的代码也会被评估。