Effetti speciali e sviluppo giochi in Java(TM) -AppletAnimator II, ora configurabile
di Anibal Wainstein (traduzione di Hanami Solutions)
4.1.3 AppletAnimator
II, ora configurabile
Non servono molti cambiamenti
nella applet AppletAnimator della sezione 4.0.4
per renderla configurabile. Iniziamo con l'aggiungere una variabile, "maxitems",
che contiene il numero di immagini che l'utente ha specificato
nei parametri dell'applet. Il valore di questa variabile deve
essere specificato dall'utente come parametro, il cui nome sarà anche esso "maxitems":
//"maxitems" verrà usato per indicare il numero di
//immagini esistenti.
int maxitems=0; //"sleeptime" indica il distacco tra ogni immagine
//in millisecondi. int sleeptime=0;
Image images[]; int currentimage=0;
public void init()
{ ///Ottiene il valore del parametro "maxitems"
//col numero in base 10.
maxitems=getIntegerParameter("maxitems",10);
/Ottiene il valore del parametro "sleeptime".
sleeptime=getIntegerParameter("sleeptime",10);
//L' array "images" avrà il numero "maxitems"
//di elementi
images=new Image[maxitems];
MediaTracker tracker=new MediaTracker(this); for (int i=0; i<maxitems; i++)
{ //La riga seguente leggerà i valori dei
//parametri "image0", "image1", "image2" e così via
//sino al valore indicato da maxitems. Userà anche
//le stringhe per caricare i files specificati in quei
//parametri.
images[i]=getImage(getDocumentBase()
,getParameter("image"+i));
//Il numero ID per ogni immagine deve essere incrementato
//per ogni immagine che aggiungete al tracker.
tracker.addImage(images[i],i);
}
//Finalmente ci assicuriamo che il tracker carichi le immagini. try {tracker.waitForAll();} catch(InterruptedException e)
{ System.out.println("Qualcosa è successo durante la lettura delle immagini...");
}
}
L' applet partirà col leggere il valore di
"maxitems". Questa variabile deve contenere l'esatto
numero di parametri per l'immagine che verranno letti dalla applet.
La variabile "sleeptime" indica il distacco tra
ogni fotogramma di immagine, che può essere molto utile da
implementare. The nome del file di ogni immagine si specifica nei
parametri "image0", "image1" e così via.
Quello che succede è che il ciclo for legge un parametro
e usa direttamente il valore per caricare il file d'immagine e
aggiungerlo alla lista del tracker. La configurazione per
ottenere lo stesso effetto come nell'esempio della sezione 4.0.4
apparirebbe come segue:
<APPLET CODE="appletanimator2.class" WIDTH=100 HEIGHT=100>
<PARAM name="maxitems" value="4">
<PARAM name="sleeptime" value="200">
<PARAM name="image0" value="image0.gif">
<PARAM name="image1" value="image1.gif">
<PARAM name="image2" value="image2.gif">
<PARAM name="image3" value="image3.gif">
</APPLET>
La applet non è ancora pronta. Ci servono due piccoli cambiamenti nel metodo run():
public void run()
{ while (true) { update(getGraphics());
//"currentimage" viene incrementata così che la
//prossima immagine venga mostrata nel prossimo aggiornamento dello schermo.
currentimage++;
//Ad ogni modo non deve eccedere il valore
//di maxitems meno 1. if (currentimage>maxitems-1) currentimage=0;
//La variabile sleeptime imposta
//il distacco in milliseconds. try {Thread.sleep(sleeptime);} catch(InterruptedException e) {} }
}
Vi prego di notare che "maxitems-1" è
il limite massimo per la variabile "currentimage" e
il distacco viene ora impostato dalla variabile "sleeptime".
Finalmente possiamo presentare la nostra prima applet configurabile!
Per dimostrare come la stessa applet possa essere riconfigurata e
sembrare completamente diversa, l'usiamo come semplice slide show
con sei immagini di texture. L'otteniamo incrementando il distacco
a 2000 millisecondi (2 secondi) e impostando "maxitems"
a 6. Clickate qua!
Pagina seguente >>
|