我想在 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 个问题,我会在您身边。玩得开心!