Processing 如何在处理中删除draw()之后的上一个形状

Processing 如何在处理中删除draw()之后的上一个形状,processing,Processing,我想不出来。我有一张画有旋转矩形的草图。它们在每次绘制时都会旋转()。但是,上一个矩形仍然可见。我试着移动background(),但它要么去掉除一个矩形之外的所有矩形,要么无法清除屏幕。我想能够清除所有的矩形后,每次绘制 代码如下: //创建对象数组 ArrayList圆圈=新的ArrayList(); ArrayList centrePoint=新的ArrayList(); 无效设置(){ 大小(800800); 帧率(1); 矩形模式(中心); 背景(204); 对于(int i=1;i

我想不出来。我有一张画有旋转矩形的草图。它们在每次绘制时都会旋转()。但是,上一个矩形仍然可见。我试着移动background(),但它要么去掉除一个矩形之外的所有矩形,要么无法清除屏幕。我想能够清除所有的矩形后,每次绘制

代码如下:

//创建对象数组
ArrayList圆圈=新的ArrayList();
ArrayList centrePoint=新的ArrayList();
无效设置(){
大小(800800);
帧率(1);
矩形模式(中心);
背景(204);
对于(int i=1;i<50;i++){
浮动r=随机(100,高度-100);
浮动s=随机(100,宽度-100);
浮点数t=20;
浮点数u=20;
println(“打印椭圆r和s”+r,s);
添加(新的圆(r、s、t、u、颜色(14255255)、随机(360)、随机(5)、随机(10));
}
//从阵列中画出所有的圆
用于(圆:圆){
画圆();
浮动接头startx=圆圈x1;
浮球连接度=圆1.y1;
println(“PrintconnectStartX和Y”+connectStartX,connectStartY);
用于(圆圈结束:圆圈){
float connectEndX=(circleEnd.x1);
float connectEndY=(圆圈y1);
添加(新连接器(connectStartX、connectStartY、connectEndX、connectEndY));
}
}
//对于每个椭圆,将椭圆的中心点添加到阵列中
用于(连接器连接:中心点){
println(connectUp.connectStartX、connectUp.connectStartY、connectUp.connectEndX、connectUp.connectEndY);
冲程(100,0,0);
如果(距离(connectUp.connectStartX、connectUp.connectStartY、connectUp.connectEndX、connectUp.connectEndY)<75){
connectUp.draw(connectUp.connectStartX、connectUp.connectStartY、connectUp.connectEndX、connectUp.connectEndY);
}
}
//对于线宽,它应该等于它来自ie的节点的fat
//对于每个圆,对于每个连接,如果x==connectStartX和y==connectStartY,则使线strokeWeight==fat
用于(圆:圆){
用于(连接器连接:中心点){
如果(connectUp.connectStartX==circle.x1和connectUp.connectStartY==circle.y1&(dist(connectUp.connectStartX、connectUp.connectStartY、connectUp.connectEndX、connectUp.connectEndY)<75)){
打印(“真”+圆圈.fat);
浮动权限=circle.fat;
冲程重量(授权*1.5);
connectUp.draw(connectUp.connectStartX、connectUp.connectStartY、connectUp.connectEndX、connectUp.connectEndY);
}
}
}
}
无效更新(){
}
作废提款(){
用于(圆:圆){
圆形旋转=+0.02;
画圆();
circle.rot=随机(-6,6);
}
}
//需要将每个椭圆连接到所有其他椭圆
类连接器{
公共浮球连接STARTX;
公共交通系统;
公共浮动connectEndX;
公共浮动连接;
公共色cB;
公共浮子厚度;
公共连接器(浮动连接器STARTX、浮动连接器STARTY、浮动连接器ENDX、浮动连接器ENDY){
this.connectStartX=connectStartX;
this.connectStartY=connectStartY;
this.connectEndX=connectEndX;
this.connectEndY=connectEndY;
//this.cB=tempcB;
//这个。厚度=厚度;
}
无效绘制(浮动连接开始TX、浮动连接开始TY、浮动连接结束X、浮动连接结束Y){
线路(connectStartX、connectStartY、connectEndX、connectEndY);
//浮动脂肪=随机(255);
//填充(脂肪);
冲程(100,0,0);
}
}
班级圈子{
公众浮标x1;
公共浮动y1;
公众浮标x2;
公众浮动y2;
公共色cB;
公众浮躁;
公共浮动脂肪=随机(5);
公共浮动fert=0.1;
公众圈(浮子x1、浮子y1、浮子x2、浮子y2、色温CB、浮子腐烂、浮子脂肪、浮子蕨){
这是1.x1=x1;
这是1.y1=y1;
这是0.x2=x2;
这1.y2=y2;
this.cB=tempcB;
//倾斜-我认为这是用弧度来完成的
这个。腐烂=腐烂;
//权威-这是填充
这个。脂肪=脂肪;
//生育率——这是倾斜的乘数
this.fert=fert;
}
void draw(){
pushMatrix();
翻译(x1,y1);
fert=随机(0.5);
rot=随机(-6,6);
旋转(腐烂*蕨类);
平移(-x1,-y1);
//浮动脂肪=随机(255);
填充(脂肪);
rect(x1,y1,24,36);
popMatrix();
}
}

您要做的是打印每一个圆或行…等等。你需要有一个计时器,每隔一段时间就删除一次。如果你做得太快,你会得到一个频闪般的外观。因此,要有一个计时器,每隔一段时间从数组列表中删除第一个rect

您的代码中有一些我在之前的文章中看到的东西。你画画的方式毫无意义,我会解释原因

以下是大多数处理草图的功能:

  • 使用
    setup()
    函数设置要在程序中使用的任何数据结构不要使用
    setup()
    功能进行任何绘图。
  • 调用
    background()
    每帧清除旧帧
  • Draw()
    函数的框架中绘制想要绘制的所有内容
  • 修改数据结构以更改在屏幕上绘制的内容
您的代码对于有点太长,因此以下是一个以更标准的方式处理图形的小示例:

ArrayList圆圈=新建ArrayList();
无效设置(){
大小(500500);
椭圆模型(半径);
//在此处设置数据结构
添加(新的PVector(250250));
//现在还不要画画
}
void mousePressed(){
//只要您想更改屏幕上的内容,就可以修改数据结构
添加(新的PVector(mouseX,mouseY));
}
按下void键(){
//只要您想更改屏幕上的内容,就可以修改数据结构