Чтобы сохранить некоторые объекты при обновлении других, вы либо:
Обновить только часть экрана. Например, нарисуйте фигуру (прямоугольник или что-то еще) с фоновым цветом, удаляющим только часть экрана
Условно-выбор выделенных объектов. Используйте флаги для выборочного розыгрыша, что вам нужно, каждую ничью и используйте background()
, чтобы очистить весь экран за каждый цикл розыгрыша.
Использовать слои. Удалите один слой, а не другой, как вам нужно, отобразите все их в режиме рисования. Обычно это делается с объектами PGraphics. Поиск обработки + слоев для просмотра образцов. Здесь и/или в processing forum.
EDIT: Вот некоторые простые примеры каждого подхода:
1.
/**
* A very simple example of erasing just part of the screen to
* selective persist draws
**/
void setup() {
size(400, 400);
background(0);
noStroke();
}
void draw() {
fill(0);
rect(0, 0, width/2, height);
fill(120);
ellipse(width/4, frameCount%width, 100, 100);
}
void mouseMoved() {
fill(255);
ellipse(mouseX, mouseY, 10, 10);
}
2.
/**
* A very simple example of conditionally draw stuf
* to selective persist draws
**/
ArrayList <PVector> points = new ArrayList <PVector>();
boolean showBalls = true; // any key to toogle
void setup() {
size(400, 400);
background(0);
noStroke();
}
void draw() {
background(0);
fill(30);
rect(frameCount%width, 100, 200, 200);
fill(120);
ellipse(width/2, frameCount%width, 150, 150);
fill(255);
if (showBalls) {
for (PVector p : points) {
ellipse(p.x, p.y, 10, 10);
}
}
if (points.size() > 500) {
points.clear();
}
}
void mouseMoved() {
ellipse(mouseX, mouseY, 10, 10);
points.add(new PVector(mouseX, mouseY));
}
void keyPressed() {
showBalls = !showBalls;
}
3.
/**
* A very simple example of using PGraphics as layers
* to selective persist draws
**/
PGraphics layer;
void setup() {
size(400, 400);
layer = createGraphics(width, height);
layer.beginDraw();
layer.fill(255);
layer.endDraw();
background(0);
noStroke();
}
void draw() {
background(0);
fill(30);
rect(frameCount%width, 100, 200, 200);
fill(120);
ellipse(width/2, frameCount%width, 150, 150);
image(layer, 0, 0);
}
void mouseMoved() {
layer.beginDraw();
layer.ellipse(mouseX, mouseY, 10, 10);
layer.endDraw();
}
Я уже закодировал анимацию. Но, как я уже сказал, я сделал это внутри метода draw (который выполняется автоматически все время). Таким образом я создаю новые фон/кнопки и все элементы снова и снова (и, следовательно, дерево скрыто за ними) – shieldcy
Вы можете отредактировать свой вопрос или удалить его, если хотите. Просто попробуйте что-то конкретное, например «Как рисовать эллипс с помощью Win32/C++?», Хорошие вопросы касаются этих строк. – sashoalm
Пожалуйста, разместите часть своего кода и добавьте некоторые конкретные вопросы или проблемы, которые у вас есть. Вот так хорошо с удовольствием помогаем вам. –