【发布时间】:2019-05-29 01:47:10
【问题描述】:
我正在创建一个正在处理的太阳系模型,在移除背景后,我注意到行星在它们身后留下了它们图像的痕迹。当后台重新进入时,程序运行良好,但我想添加更多内容,我确信这效率低下并且会陷入困境。
我对处理非常陌生,我真的不知道如何解决这个问题。也许在延迟后删除以前的图像以创建缩短的路径?
这些只是我认为从代码中挑选出来的重要部分,这只是一个星球的例子。对不起,如果代码很笨拙,任何建议都乐意接受。
Planet p1;
void setup() {
mercury = loadImage("mercury.png")
p1 = new Planet(40, random(TWO_PI), 0.05);
}
void draw() {
//background(0)
translate(width / 2, height / 2);
p1.display1();
p1.orbit();
}
class Planet {
float radius;
float angle;
float distance;
float orbitSpeed;
Planet(float r, float d, float o) {
radius = r;
distance = d;
orbitSpeed = o;
angle = random(TWO_PI);
}
void orbit() {
angle = angle + orbitSpeed;
}
void display1() {
pushMatrix();
rotate(angle);
translate(distance, 0);
imageMode(CENTER);
image(mercury, radius, radius, 10, 10);
popMatrix();
}
}
我意识到这可能会发生,但我不知道如何阻止它。
【问题讨论】:
-
此时我不会担心优化任何东西。将先前的 X 位置存储在 ArrayList 中,并在每一帧重绘它们。我的猜测是你想做的任何事情都可以。
标签: animation optimization processing