我有一个在屏幕上移动的圆圈,我需要的是能够使该圆圈在其后留下一条线,该线在大约一秒钟后消失。我正在使用处理。
最佳答案
不能说它的效率,但我想做到这一点的一种方法是将旧位置保留在ArrayList中?然后,您可以在每个点之间绘制线,只要在每个帧中按当前位置并删除最近的位置即可。希望能帮助到你!
PVector circlePosition;
ArrayList<PVector> circleTrail;
int trailSize = 10;
void setup() {
size(500, 500);
circlePosition = new PVector(width*0.5, width*0.5);
circleTrail = new ArrayList<PVector>();
}
void draw() {
background(255);
int trailLength;
circlePosition = new PVector(mouseX, mouseY);
circleTrail.add(circlePosition);
trailLength = circleTrail.size() - 2;
println(trailLength);
for (int i = 0; i < trailLength; i++) {
PVector currentTrail = circleTrail.get(i);
PVector previousTrail = circleTrail.get(i + 1);
stroke(0, 255*i/trailLength);
line(
currentTrail.x, currentTrail.y,
previousTrail.x, previousTrail.y
);
}
ellipse(circlePosition.x, circlePosition.y, 10, 10);
if (trailLength >= trailSize) {
circleTrail.remove(0);
}
}