Effetti speciali e sviluppo giochi in Java(TM) -Un terminale informatico nella vostra finestra di status (statusdatatext)
di Anibal Wainstein (traduzione di Hanami Solutions)
3.1.2 Un terminale informatico nella vostra finestra di status (statusdatatext)
I terminali informatici all'inizio degli anni 80 erano davvero
lenti e avevano un modo particolare di scrivere le frasi. Qui,
cercheremo di simulare quell'effetto, ma nella finestra di status
e con solo una frase.
Effettuate una copia del precedente file Java e riscrivete il metodo init()
secondo il seguente codice:
public void init()
{ message="Pronti al lancio...."; message+="6... 5... 4... 3... 2... 1... 0...";
}
Non abbiamo bisogno di spazi vuoti prima del messaggio, perché il messaggio
persisterà nella finestra di status. Scrivete il seguente metodo run() :
public void run()
{ int L=message.length(); boolean showcursor=false; //Scrive il messaggio
passo passo //col cursore lampeggiante. for (int i=0; i<L; i++) {
if (showcursor)
showStatus(message.substring(0,i)+"_"); else showStatus(message.substring(0,i)); showcursor=!showcursor; try {Thread.sleep(100);} catch(InterruptedException e) {}
}
//Il messaggio è stato scritto. Animate il cursore //(lo fa lampeggiare). while (true) { if (showcursor) showStatus(message+"_"); else showStatus(message); showcursor=!showcursor; try {Thread.sleep(100);} catch(InterruptedException e) {} }
}
L'effetto è in due passaggi e due cicli. La prima cosa
che facciamo prima di entrare nei cicli è inizializzare
una variabile che sarà usata per l'effetto cursore ("showcursor").
All'interno dei cicli e usando la seguente espressione, questa variabile
sarà impostata a true quando è false e viceversa:
showcursor=!showcursor;
La parola chiave "!" indica complementare o opposto. Così "showcursor"
sarà impostato al valore opposto del proprio stesso. Quando questa variabile
è true, allora il cursore del computer verrà mostrato, il che nel
nostro caso to è un carattere di trattino basso "_".
Sarà aggiunto alla stringa del messaggio prima che sia scritto
nella finestra di status. Nel ciclo for scriviamo il messaggio passo
passo usando il metodo substring() (più il cursore) e aggiungiamo
una pausa dopo averlo scritto.
L'ultimo ciclo while nel metodo run() ci serve affinché
il thread mantenga il cursore animato per un tempo infinito.
Lo usiamo per rendere l'effetto un pò più realistico.
Clickate qua per vedere
statusdatatext in azione.
Notate, che se volete accelerare gli effetti in questo esempio
e nell'esempio della scorsa sezione, allora decrementate il valore
nel metodo sleep(). Avrete così una applet che pesa di più
sul processore. In effetti più complicati questo richiede molti
calcoli e ciò potrebbe causare grossi problemi, come ne daremo
esempio nei capitoli più avanti.
Pagina seguente >>
|