无法摆脱Processing sketch中的视觉瑕疵

时间:2016-07-14 19:22:25

标签: arrays animation processing visual-artifacts

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 个答案:

答案 0 :(得分:1)

凯文指出,你不应该一遍又一遍地加载图像,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);
}