我想在 Processing 中使用 keyPressed() 稍微移动一个椭圆,但是当我这样做时它会添加另一个椭圆而不是去掉一个
I want to move an ellipse slightly using the keyPressed() in Processing but when I do so it adds another ellipse instead of getting rid of one
抱歉,如果这是一个愚蠢的问题才开始学习 Java 在处理过程中,我有点困惑。哈哈
boolean eyeMove = false;
boolean armMove = false;
void setup() {
size(600, 800);
smooth();
}
void draw() {
stroke(1);
fill(255);
ellipse(300, 460, 230, 270);
stroke(1);
fill(188);
ellipse(280, 220, 35, 95);
ellipse(320, 220, 35, 95);
fill(126);
ellipse(280, 220, 20, 80);
ellipse(320, 220, 20, 80);
stroke(1);
fill(255);
ellipse(300, 300, 100, 100);
fill(188);
noStroke();
ellipse(300, 460, 130, 170);
fill(0);
ellipse(240, 580, 40, 40);
ellipse(360, 580, 40, 40);
fill(0);
ellipse(300, 320, 20, 10);
fill(0);
triangle(300, 330, 289, 344, 310, 344);
fill(188);
stroke(1);
ellipse(280, 290, 20, 20);
ellipse(320, 290, 20, 20);
keyPressed();
}
void keyPressed() {
if (!keyPressed) {
fill(0);
ellipse(390, 350, 40, 40);
ellipse(210, 350, 40, 40);
} else if (keyPressed) {
armMove = true;
fill(125);
ellipse(390, 350, 40, 40);
ellipse(230, 350, 40, 40);
}
我在兔子的眼睛上使用了 mousePressed,效果很好。我现在很困惑这是怎么引起问题的。
`draw() 方法不仅仅是一个绘图循环。这是你程序的主循环。因此,它不会在循环的每次迭代中清除屏幕,而是只绘制您告诉它绘制的内容。事实上,您可以在任何方法中绘画,只要它在某个时候被调用即可。
这里的问题是你 re-painting 兔子 超过前一个 。您永远不会“擦除”您以前的绘图。人们通常使用 background()
方法来这样做。我稍微修改了您的草图以向您展示我的意思:
void setup() {
size(600, 800);
smooth();
}
void draw() {
background(128);
stroke(1);
fill(255);
ellipse(300, 460, 230, 270);
fill(188);
ellipse(280, 220, 35, 95);
ellipse(320, 220, 35, 95);
fill(126);
ellipse(280, 220, 20, 80);
ellipse(320, 220, 20, 80);
fill(255);
ellipse(300, 300, 100, 100);
fill(188);
noStroke();
ellipse(300, 460, 130, 170);
fill(0);
ellipse(240, 580, 40, 40);
ellipse(360, 580, 40, 40);
ellipse(300, 320, 20, 10);
triangle(300, 330, 289, 344, 310, 344);
fill(188);
stroke(1);
ellipse(280, 290, 20, 20);
ellipse(320, 290, 20, 20);
if (keyPressed) {
ellipse(390, 350, 40, 40);
ellipse(230, 350, 40, 40);
} else {
ellipse(390, 350, 40, 40);
ellipse(210, 350, 40, 40);
}
}
如果您有 follow-up 个问题,我会在您身边。玩得开心!
抱歉,如果这是一个愚蠢的问题才开始学习 Java 在处理过程中,我有点困惑。哈哈
boolean eyeMove = false;
boolean armMove = false;
void setup() {
size(600, 800);
smooth();
}
void draw() {
stroke(1);
fill(255);
ellipse(300, 460, 230, 270);
stroke(1);
fill(188);
ellipse(280, 220, 35, 95);
ellipse(320, 220, 35, 95);
fill(126);
ellipse(280, 220, 20, 80);
ellipse(320, 220, 20, 80);
stroke(1);
fill(255);
ellipse(300, 300, 100, 100);
fill(188);
noStroke();
ellipse(300, 460, 130, 170);
fill(0);
ellipse(240, 580, 40, 40);
ellipse(360, 580, 40, 40);
fill(0);
ellipse(300, 320, 20, 10);
fill(0);
triangle(300, 330, 289, 344, 310, 344);
fill(188);
stroke(1);
ellipse(280, 290, 20, 20);
ellipse(320, 290, 20, 20);
keyPressed();
}
void keyPressed() {
if (!keyPressed) {
fill(0);
ellipse(390, 350, 40, 40);
ellipse(210, 350, 40, 40);
} else if (keyPressed) {
armMove = true;
fill(125);
ellipse(390, 350, 40, 40);
ellipse(230, 350, 40, 40);
}
我在兔子的眼睛上使用了 mousePressed,效果很好。我现在很困惑这是怎么引起问题的。
`draw() 方法不仅仅是一个绘图循环。这是你程序的主循环。因此,它不会在循环的每次迭代中清除屏幕,而是只绘制您告诉它绘制的内容。事实上,您可以在任何方法中绘画,只要它在某个时候被调用即可。
这里的问题是你 re-painting 兔子 超过前一个 。您永远不会“擦除”您以前的绘图。人们通常使用 background()
方法来这样做。我稍微修改了您的草图以向您展示我的意思:
void setup() {
size(600, 800);
smooth();
}
void draw() {
background(128);
stroke(1);
fill(255);
ellipse(300, 460, 230, 270);
fill(188);
ellipse(280, 220, 35, 95);
ellipse(320, 220, 35, 95);
fill(126);
ellipse(280, 220, 20, 80);
ellipse(320, 220, 20, 80);
fill(255);
ellipse(300, 300, 100, 100);
fill(188);
noStroke();
ellipse(300, 460, 130, 170);
fill(0);
ellipse(240, 580, 40, 40);
ellipse(360, 580, 40, 40);
ellipse(300, 320, 20, 10);
triangle(300, 330, 289, 344, 310, 344);
fill(188);
stroke(1);
ellipse(280, 290, 20, 20);
ellipse(320, 290, 20, 20);
if (keyPressed) {
ellipse(390, 350, 40, 40);
ellipse(230, 350, 40, 40);
} else {
ellipse(390, 350, 40, 40);
ellipse(210, 350, 40, 40);
}
}
如果您有 follow-up 个问题,我会在您身边。玩得开心!