Home E-Books Effetti speciali e sviluppo giochi in Java Un TextScroller configurabile

Effetti speciali e sviluppo giochi in Java(TM) -Un TextScroller configurabile (TextScroller II)

di Anibal Wainstein (traduzione di Hanami Solutions)

4.2.2 Un TextScroller configurabile (TextScroller II)

Come potreste ricordare, il textscroller nel Capitolo 3 sfarfallava. Possiamo sistemarlo ora che conosciamo la tecnica del double buffering. Allo stesso tempo rendiamolo più configurabile. Cominciamo con l'aggiungere e modificare alcune variabili prima:

public Thread animationthread = null;
public String message;
public int x=100;
Image bufferimage;
Graphics bufferg;
//I seguenti colori sono inseriti come
//parametri ESADECIMALI e sono usati per
//impostare i colori di sfondo e del testo 
//della applet.
Color backgroundcolor,textcolor;
//La variabile "delay" viene usata come
//ritardo per ogni immagine-fotogramma.
int delay=0;

Abbiamo aggiunto alcune variabili per impostare i colori di sfondo e primo piano. La variabile "delay" deve essere il ritardo nella animazione, come era nella applet slideshow. Non dimenticate di copiare e incollare il metodo getIntegerParameter(). Anche il metodo init() richiede un piccolo cambiamento:

public void init()
{
//Leggiamo il messaggio come parametro e allo stesso tempo
   //leggeremo un parametro chiamato "delay" per il ritardo
    //dell'immagine.
    message=getParameter("message");
    delay=getIntegerParameter("delay",10);
    //Notate che leggiamo i valori in
     //forma ESADECIMALE (in base 16)
    //e poi creiamo un colore.
    backgroundcolor=
        new Color(getIntegerParameter("backgroundcolor",16));
    textcolor=new Color(getIntegerParameter("textcolor",16));
    //Le seguenti righe sono copiate pari pari
    //da slideshow2.java
    Dimension d=size();
    bufferimage=createImage(d.width,d.height);
    bufferg=bufferimage.getGraphics();
}

Fate caso che otteniamo i colori per l'applet tramite il metodo getIntegerParameter() e specificando che vogliamo leggerli come numeri in base 16, invece che 10. Facciamo così di modo che i parametri possano essere specificati in numeri esadecimali dall'utente dell'applet. I parametri potrebbero a questo punto apparire così:

<APPLET CODE="textscroller2.class" WIDTH=100 HEIGHT=20>
<PARAM name="message" 
value="Questo e' textscroller II, ora configurabile">
<PARAM name="backgroundcolor" value="ff0000">
<PARAM name="textcolor" value="0000ff">
<PARAM name="delay" value="50">
</APPLET>

Abbiamo impostato il colore di sfondo a rosso (FF0000) e il colore del testo a blu (0000FF). Se non siete abituati ai valori esadecimali dei colori allora forse la seguente tabella può esservi utile:

Rosso FF0000
Verde 00FF00
Blu 0000FF
Celeste 00FFFF
Giallo FFFF00
Magenta FF00FF
Nero 000000
Grigio scuro 7F7F7F
Grigio chiaro AFAFAF
Bianco FFFFFF
Arancio FF7F00
Rosso scuro 7F0000
Verde scuro 007F00
Blu scuro 00007F

Tutta l'attività di disegno nel metodo paint() va fatta nel buffer, invece che direttamente nello schermo dell' applet. Quando è finito, allora il buffer vien mostrato su schermo:

public synchronized void paint(Graphics g)
{
     //È sempre bene controllare che
    // bufferg sia stato inizializzato.
    if (bufferg!=null)
    {
   //Dipingiamo lo schermo del colore
        //di sfondo che ci è stato indicato.
        bufferg.setColor(backgroundcolor);
        bufferg.fillRect(0,0,100,20);
      //Tracciamo il messaggio partendo dalla
        //posizione "x".
        bufferg.setColor(textcolor);
        bufferg.drawString(message,x,12);
        g.drawImage(bufferimage,0,0,this);
        if (x<-400) x=100;
        x--;
    }
}

Notate che usiamo le variabili "backgroundcolor" e "textcolor" per specificare il color di sfondo e quello del testo della applet. Finalmente apportiamo un piccolo cambiamento al metodo run() così che il ritardo dei fotogrammi nella applet sia impostabile:

public void run()
{
   while (true)
    {
        update(getGraphics());
          //La variabile "delay" ora rende
        //il ritardo configurabile.
        try {Thread.sleep(delay);}
       catch(InterruptedException e) {}
    }
}

Ora l'applet è pronta. Dovete sapere che la lunghezza del testo è limitata e che le dimensioni dell'applet devono essere 100x20 pixels. Non ha senso cambiarne le dimensioni proprio ora, quando non ne potreste comunque controllare le dimensioni del testo. lo imparerete nel capitolo 6. Clickate qua per vedere la applet.

Potreste a questo punto sentirvi pronti a lanciare la vostra azienda Java ed inondare Internet con le vostre applets dopo questo capitolo. Ve la cavereste anche bene come programmatore di effetti speciali , ma ci sono ancora dei pezzi mancanti nella vostra preparazione. Alcuni di questi li esamineremo nel prossimo capitolo che verte sui messaggi di input dal mouse.

 

 

 


Pagina seguente >>