处理 - 移动图像留下痕迹

时间:2014-02-12 20:06:29

标签: java image processing

我正在尝试在处理中移动图像,但图像正在留下痕迹。绊倒我的重要部分是我不能在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不知道如何,我还没有机会问教授。

如果没有人知道答案和/或它与其他功能(放置图像)有关,我会发布相关代码。

3 个答案:

答案 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'方法只在程序执行时运行一次。因此,当您移动图像时,如果背景颜色不在“绘图”方法中,则在移动图像时不会重绘它,从而留下痕迹。