簡體   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