问题描述
很抱歉,如果这是一个愚蠢的问题,只是开始在处理过程中学习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,95);
fill(126);
ellipse(280,20,80);
ellipse(320,80);
stroke(1);
fill(255);
ellipse(300,300,100,100);
fill(188);
noStroke();
ellipse(300,130,170);
fill(0);
ellipse(240,580,40,40);
ellipse(360,40);
fill(0);
ellipse(300,320,10);
fill(0);
triangle(300,330,289,344,310,344);
fill(188);
stroke(1);
ellipse(280,290,20);
ellipse(320,20);
keyPressed();
}
void keyPressed() {
if (!keyPressed) {
fill(0);
ellipse(390,350,40);
ellipse(210,40);
} else if (keyPressed) {
armMove = true;
fill(125);
ellipse(390,40);
ellipse(230,40);
}
我在老鼠的眼睛上使用过mousePressed,效果很好。我只是很困惑,这现在是怎么引起问题的。
解决方法
`draw()方法不只是一个绘图循环。这是程序的主循环。这样,它不会在循环的每次迭代时都清除屏幕,而只会绘制您告诉它绘制的内容。实际上,只要在某个时候被调用,您就可以用任何方法绘制。
这里的问题是您要在前一个兔子上绘制兔子。您永远不会“擦除”先前的图形。人们通常使用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,95);
fill(126);
ellipse(280,20,80);
ellipse(320,80);
fill(255);
ellipse(300,300,100,100);
fill(188);
noStroke();
ellipse(300,130,170);
fill(0);
ellipse(240,580,40,40);
ellipse(360,40);
ellipse(300,320,10);
triangle(300,330,289,344,310,344);
fill(188);
stroke(1);
ellipse(280,290,20);
ellipse(320,20);
if (keyPressed) {
ellipse(390,350,40);
ellipse(230,40);
} else {
ellipse(390,40);
ellipse(210,40);
}
}
如果您有后续问题,我会在附近。玩得开心!