2016-07-14 80 views
0
int numFrames = 5; //Number of animation frames 
int frame = 0; 
PImage[] images = new PImage[numFrames]; //Image array 

void setup() 
{ 
    size(800, 800); 
    background(180, 180, 180); 
    frameRate(15); //Maximum 30 frames per second 
} 

void draw() 
{ 
    images[0] = loadImage("Ayylmfao.0001.png"); 
    images[1] = loadImage("Ayylmfao.0002.png"); 
    images[2] = loadImage("Ayylmfao.0003.png"); 
    images[3] = loadImage("Ayylmfao.0004.png"); 
    images[4] = loadImage("Ayylmfao.0005.png"); 
    frame++; 
     if (frame == numFrames) 
     { 
      frame = 0; 
     } 

    image(images[frame], 0, 0); 
} 

所以我的問題是這樣的:當我嘗試運行此動畫時,我不斷從前面的幀中獲取工件。我正在使用一個數組來存儲動畫中的圖像,因爲我一般都在嘗試使用數組。無法擺脫加工草圖中的視覺瑕疵

動畫是閃爍的眼球。問題是,當它眨眼時,所有先前的畫面都會被畫出。眼球的虹膜消失,眼球開始收集前一幀的僞影。

+1

您能否爲我們提供您正在使用的圖像?另外,你不應該在'draw()'函數中加載圖像。改爲從setup()函數加載它們。 –

回答

1

正如Kevin所指出的那樣,您不應該一次又一次地在draw()中每秒多次加載圖像。您應該在setup()中加載一次,然後渲染它們到draw()

int numFrames = 5; //Number of animation frames 
int frame = 0; 
PImage[] images = new PImage[numFrames]; //Image array 

void setup() 
{ 
    size(800, 800); 
    background(180, 180, 180); 
    frameRate(15); //Maximum 30 frames per second 
    images[0] = loadImage("Ayylmfao.0001.png"); 
    images[1] = loadImage("Ayylmfao.0002.png"); 
    images[2] = loadImage("Ayylmfao.0003.png"); 
    images[3] = loadImage("Ayylmfao.0004.png"); 
    images[4] = loadImage("Ayylmfao.0005.png"); 
} 

void draw() 
{ 

    frame++; 
     if (frame == numFrames) 
     { 
      frame = 0; 
     } 

    image(images[frame], 0, 0); 
} 
+0

所以我想通了。背景僅在設置中使用,然後被拖放。儘管感謝陣列上的提示。 –