Processing 有条件更改圆大小将创建多个圆

Processing 有条件更改圆大小将创建多个圆,processing,Processing,当按下向上箭头键时,程序会增大圆的直径,而按下向下箭头键则会减小圆的直径。但是,当我按下向下键时,它会在原始圆上创建更小的圆,而不是缩小其大小 照片: 我怀疑向上键也在做同样的事情,但效果并不明显。如何使其改变现有圆的直径,而不是生成新圆 int X; void setup(){ size(400, 400); fill(#FFFF00); } void draw() { circle(200, 200, X + 30); if (keyPressed) { if

当按下向上箭头键时,程序会增大圆的直径,而按下向下箭头键则会减小圆的直径。但是,当我按下向下键时,它会在原始圆上创建更小的圆,而不是缩小其大小

照片:

我怀疑向上键也在做同样的事情,但效果并不明显。如何使其改变现有圆的直径,而不是生成新圆

int X;

void setup(){
  size(400, 400);
  fill(#FFFF00);
}

void draw() {
  circle(200, 200, X + 30);

  if (keyPressed) {
    if (key == CODED) {
      if (keyCode == UP) {
        if (X <= 300) {
          X = X + 5;
        }
      }
      if (keyCode == DOWN) {
        if (X >= 30) {
          X = X - 5;
        }
      }
    }
  }

}
intx;
无效设置(){
尺寸(400400);
填充(#FFFF00);
}
作废提款(){
圆圈(200,200,X+30);
如果(按键){
如果(键==编码){
if(keyCode==UP){
如果(X=30){
X=X-5;
}
}
}
}
}
尝试在draw()的顶部添加一个background()调用,以便上一个圆被透支

int X;
color BLUE = color(64,124,188);

void setup(){
  size(400, 400);
  fill(#FFFF00);
}

void draw() {
  background(BLUE);
  circle(200, 200, X + 30);

  if (keyPressed) {
    if (key == CODED) {
      if (keyCode == UP) {
        if (X <= 300) {
          X = X + 5;
        }
      }
      if (keyCode == DOWN) {
        if (X >= 30) {
          X = X - 5;
        }
      }
    }
  }

}
intx;
颜色蓝色=颜色(64124188);
无效设置(){
尺寸(400400);
填充(#FFFF00);
}
作废提款(){
背景(蓝色);
圆圈(200,200,X+30);
如果(按键){
如果(键==编码){
if(keyCode==UP){
如果(X=30){
X=X-5;
}
}
}
}
}

谢谢,成功了!我很好奇,你能解释一下为什么在画圈()之前放一个背景调用可以解决这个问题吗?我猜这是因为每帧都会执行一次,但是背景是先执行的,并且在前面的所有圆圈上不断地画出来?你的猜测是正确的。您可以在此处阅读有关background()的更多信息: