繁体   English   中英

处理-运动图像离开轨迹

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM