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