通过处理烘焙屏幕上的阵列

问题描述 投票:0回答:1

我喜欢使用Processing数组函数,但是当我使用此函数进行绘制时,我意识到它会将每个绘制的形状存储在内存中,这会导致CPU峰值。 (特别是到几千时)

如何烘烤图形,然后在释放鼠标时删除数组对象?我的意思是,Processing是否可以在每个笔触之后将这些对象表现为单个图像,然后使用.remove(0)函数清除数组?

这是我的代码:

ArrayList <Drawing> drawings = new ArrayList <Drawing>();

void setup() {
  size(400, 400);
  background(255);
  colorMode(HSB);
}

void draw() {
  background(255);
  for (int i=0;i<drawings.size();i++) {
    drawings.get(i).display();


  }

  println(drawings.size());
}

void mouseDragged() {


  drawings.add(new Drawing(mouseX, mouseY));

}



class Drawing {
  float x, y, r;
  color c;

  Drawing(float ax, float ay) {
    x=ax;
    y=ay;
    r=random(2, 20);
    c=color(random(100, 200), 255, 255, 88);
  }

  void display() {
    noStroke();
    fill(c, 100);
    ellipse(x,y, r, r);
  }
}
java arrays processing p5.js processing.js
1个回答
-1
投票

是否有特殊原因每次都要重绘白色背景?如果没有,我想你可以做这样的事情:

ArrayList<Drawing> drawings = new ArrayList();

void setup()
{
  size(400, 400);
  background(255);
  colorMode(HSB);
}

void draw()
{
  println(drawings.size());
}

void mouseDragged()
{
  Drawing drawing = new Drawing(mouseX, mouseY);
  drawing.display();
  drawings.add(drawing);
}

class Drawing
{
  float x, y, r;
  color c;

  Drawing(float ax, float ay)
  {
    x=ax;
    y=ay;
    r=random(2, 20);
    c=color(random(100, 200), 255, 255, 88);
  }

  public void display()
  {
    noStroke();
    fill(c, 100);
    ellipse(x,y, r, r);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.