我正在尝试在处理中移动图像,但图像正在留下痕迹。绊倒我的重要部分是我不能在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;
}
}
这是实验室,TA不知道如何,我还没有机会问教授。
如果没有人知道答案和/或它与其他功能(放置图像)有关,我会发布相关代码。
答案 0 :(得分:0)
对于移动物体不要留下痕迹,必须先重新清除画框,然后重新绘制图片。(如果没有,请不要忘记重置背景)
实际上,它会绘制一辆吉普车,然后是另一辆吉普车。
答案 1 :(得分:0)
如果你不想要小道,你就清楚了背景。如果不是完全的,至少是其中的一部分,或者重绘每个不应该每帧移动的图像。 像这样:
示例代码
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);
}
答案 2 :(得分:0)
您需要在'draw'方法中重绘背景。为此,只需将以下代码行添加到“绘图”方法中:
background(red,green,blue);
您可以使用处理中的颜色选择器(在工具下找到)找到所需颜色的正确rgb代码。
原因是draw方法每秒运行60次,而'setup'方法只在程序执行时运行一次。因此,当您移动图像时,如果背景颜色不在“绘图”方法中,则在移动图像时不会重绘它,从而留下痕迹。