Home E-Books Effetti speciali e sviluppo giochi in Java AppletAnimator II 

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 >>