void setup() {
size(500,500);
background(#87ceeb);
fill(#567d46);
rect(0,height/2,500,height/2);
fill(#FFA500);
circle(50,50,75);
// Cloud 1
noStroke();
fill(#FFFFFF);
circle(335,50,50);
circle(300,50,35);
circle(370,50,35);
noStroke();
fill(#FFFFFF);
circle(335,75,50);
circle(300,75,35);
circle(370,75,35);
// Cloud 2
noStroke();
fill(#FFFFFF);
circle(200,50,50);
circle(165,50,35);
circle(235,50,35);
// Bush 1
fill(#112A12);
circle(100,425,50);
circle(65,425,35);
circle(135,425,35);
noStroke();
fill(#112A12);
circle(100,450,50);
circle(65,450,35);
circle(135,450,35);
// Bush 2
fill(#112A12);
circle(400,250,50);
circle(365,250,35);
circle(435,250,35);
noStroke();
// Path
fill(#d9b99b);
rect(0,300,width,75);
// Post
fill(#563d2d);
rect(20,225,35,15);
fill(#5C4033);
rect(50,200,15,100);
fill(#563d2d);
rect(65,210,35,15);
}
void draw() {
if (key == 'n'){
background(#040348);
fill(#006400);
rect(0,height/2,500,height/2);
// Moon
fill(#d3d3d3);
circle(450,50,75);
fill(#808080);
circle(435,35,15);
fill(#808080);
circle(450,65,25);
// Rock
rect(365,190,100,100);
rect(350,280,130,20);
fill(#563d2d);
rect(365,300,100,85);
textSize(35);
fill(#d3d3d3);
text("RIP",390,235);
// Tree
fill(#563d2d);
rect(60,140,75,200);
fill(#154734);
rect(25,150,145,75);
rect(35,125,125,75);
// Stars
fill(#ffff00);
circle(75,50,10);
circle(135,80,10);
circle(225,65,10);
circle(275,200,10);
circle(300,150,10);
circle(330,20,10);
// Path
fill(#AC9362);
rect(0,400,width,75);
} else if (key == 'd') {
background(#87ceeb);
fill(#567d46);
rect(0,height/2,500,height/2);
fill(#FFA500);
circle(50,50,75);
// Cloud 1
noStroke();
fill(#FFFFFF);
circle(335,50,50);
circle(300,50,35);
circle(370,50,35);
noStroke();
fill(#FFFFFF);
circle(335,75,50);
circle(300,75,35);
circle(370,75,35);
// Cloud 2
noStroke();
fill(#FFFFFF);
circle(200,50,50);
circle(165,50,35);
circle(235,50,35);
// Bush 1
fill(#112A12);
circle(100,425,50);
circle(65,425,35);
circle(135,425,35);
noStroke();
fill(#112A12);
circle(100,450,50);
circle(65,450,35);
circle(135,450,35);
// Bush 2
fill(#112A12);
circle(400,250,50);
circle(365,250,35);
circle(435,250,35);
noStroke();
// Path
fill(#d9b99b);
rect(0,300,width,75);
// Post
fill(#563d2d);
rect(20,225,35,15);
fill(#5C4033);
rect(50,200,15,100);
fill(#563d2d);
rect(65,210,35,15);
}
}
void mousePressed() {
fill(#FF0000);
circle(mouseX,mouseY,50);
}
我想做到这样,每当我单击它时,就会将一个对象放入画布中,但是每当我在白天和黑夜之间切换并返回时,圆圈就会消失。最重要的是,我只能在白天和黑夜之间切换之前先画圈。切换会导致下一个圆圈立即消失。我该如何解决这些问题。
我尝试将 void mousepressed 函数放置在循环内,但这也不起作用。
请记住,每次调用绘制函数时(我认为每秒 60 次),自从您调用
background()
以来,所有内容都会消失,这就是您需要再次绘制圆圈的原因。
为了解决这个问题,您可以将圆的坐标存储在数组中,然后从这些坐标中进行绘制。例如,您可以为 x 坐标创建一个 IntList,并在每次按下鼠标时将 mouseX 添加到其中,并对 y 坐标执行相同的操作,然后检查列表并为每个坐标调用
circle(x,y,50)
。
//start of your sketch
IntList xcoord = new IntList();
IntList ycoord = new IntList();
//in the draw
for(int i = 0;i<xcoord.size();i++) {
circle(xcoord.get(i),ycoord.get(i),50);
}
//the mousePressed()
void mousePressed() {
xcoord.append(mouseX);
ycoord.append(mouseY);
}