[英]Processing — moving image leaving trail
我正在尝试使图像在处理中移动,但是图像留下了痕迹。 让我绊倒的重要部分是,我无法在draw()中声明背景,因为我还有其他放置图像的功能。 以下是相关代码:
void setup()
{
size(752,500);
background = loadImage("prairie.jpg");
background(background);
noStroke();
animal = loadImage("squirrel.png");
bird = loadImage("bird.gif");
rock = loadImage("rock.png");
cloud = loadImage("cloud.png");
jeep = loadImage("jeep.png");
flower = loadImage("flower.png");
}
float jeepX = 752;
float jeepY = 250;
float size = 100;
void draw()
{
image(jeep,150,350,125,125);
image(jeep,jeepX,jeepY,size,size);
jeepX--;
jeepY = jeepY + .25;
size += .25;
image(jeep,jeepX + 1,jeepY - .25, size -.25, size - .25, 0,0,0,0);
if(jeepY > height)
{
jeepX = 752;
jeepY = 250;
size = 100;
}
}
这是供实验室使用的,助教不知道如何做,我还没有机会去问教授。
如果没有人知道答案和/或与其他功能(放置图像)有关,我将发布相关代码。
为了使移动的物体不留痕迹,必须在重新绘制图片之前先清除边框(如果没有,请不要忘记重置背景)
实际上,它会绘制一辆吉普车,然后再绘制另一辆吉普车。
如果您不想要这条路,则可以清除背景。 如果不完全,请至少重新绘制其中的一部分,或者重新绘制每帧不应移动的图像。 像这样:
样例代码
PImage bg, still, moving;
void setup() {
while ( bg == null) {// got wait as size depends on this...
println("loading bg image...");
bg = loadImage("http://dc489.4shared.com/img/f9EaWk5w/s3/13757197c08/Black_Background_Metal_Hole_-_.jpg");
}
size(bg.width, bg.height);
still = loadImage("http://www.renderosity.com/mod/bcs/photos/Thumb85619.jpg");
moving = loadImage("https://cdn1.iconfinder.com/data/icons/humano2/128x128/apps/alienblaster.png");
}
void draw() {
background(bg);
image(still, 100, 100);
image(moving, 200, frameCount%height);
}
您需要使用“绘制”方法重新绘制背景。 为此,只需将以下代码行添加到“ draw”方法中:
background(red,green,blue);
您可以在“处理”中找到“颜色选择器”(位于“工具”下),以找到所需颜色的正确rgb代码。
这样做的原因是draw方法每秒运行60次,而“ setup”方法仅在程序执行时运行一次。 这样,当您移动图像时,如果背景色不在'draw'方法中,则在移动图像时不会重绘背景色,因此会留下痕迹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.