在每一帧中显示不同的形状(处理中)
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 时,下一个案例的代码也会被评估。
我有代码,在按下鼠标时,会显示一个圆圈绕着圆圈移动。
我希望这会自动发生,即。
帧号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 时,下一个案例的代码也会被评估。