Animazione 4

La stessa animazione viene visualizzata 4 volte ma con i fotogrammi sfasati (0, 3, 6, 9).

final int numFrame = 12;
final int numAnima = 4;

int   dim;

PImage     immagini[];
Animazione animazioni[];

void setup()
{
  size(500, 500);
  frameRate(numFrame);
   
  immagini=new PImage[numFrame];
  for(int i=0; i < numFrame; i++)
     immagini[i]=loadImage("a"+i+".gif");
 
  dim=200;
  int x1=(width-2*dim)/3;
  int y1=(height-2*dim)/3;

  animazioni    = new Animazione[numAnima];  
  animazioni[0] = new Animazione(x1,        y1,        0);
  animazioni[1] = new Animazione(x1+dim+x1, y1,        3);
  animazioni[2] = new Animazione(x1,        y1+dim+y1, 6);
  animazioni[3] = new Animazione(x1+dim+x1, y1+dim+y1, 9);
}
 
void draw()
{
  background(255);
 
  for(int i=0; i < numAnima; i++)
  {
     animazioni[i].disegna();
     animazioni[i].aggiorna();
  }
}

class Animazione
{
    int x, y, frame;
   
    Animazione(int nX, int nY, int nFrame)
    {
       x=nX; 
       y=nY;
       frame=nFrame;
    }

    void aggiorna() 
    {
        frame=frame+1;
        if(frame == numFrame)
           frame=0;
    }
    void disegna()  
    {
        image(immagini[frame], x, y, dim, dim); 
    }
}