Hem E-böcker Specialeffekter och spelutveckling i Java En konfigurerbar TextScroller

Specialeffekter och spelutveckling i Java(TM) - En konfigurerbar TextScroller (TextScroller II) 

av Anibal Wainstein

4.2.2 En konfigurerbar TextScroller (TextScroller II)

Som du kanske kommer ihåg så flimrade textscrollern i kapitel 3 en hel del. Detta ska vi fixa nu när vi känner till dubbelbuffringstekningen. Samtidigt så gör vi den mer konfigurerbar. Vi börjar med att lägga till och ändra lite variabler:

public Thread programthread = null;
public String message;
public int x=100;
Image bufferimage;
Graphics bufferg;

//följande färger hämtas in som HEXADECIMALA
//parametrar och används
//för att bestämma bakgrunds- och
//textfärgen på appleten
Color backgroundcolor,textcolor;

//Variabeln "delay" används som fördröjning
//för varje bildruta.
int delay=0;

Vi har lagt till lite variabler för att bestämma bakgrundsfärgen och förgrundsfärgen. Variabeln "delay" kommer att bestämma fördröjningen i animationen, precis som i slideshow appleten. Glöm nu inte att klistra in getIntegerParameter() metoden. Metoden init() måste också ändras lite:

public void init()
{
    //vi läser in meddelandet som parameter
    //istället, samtidigt som vi läser in en
    //parameter som heter delay för fördröjningen.
    message=getParameter("message");
    delay=getIntegerParameter("delay",10);

    //Observera att vi hämtar färgerna HEXADECIMALT
    //(med basen 16) och sedan skapar en färgobjekt
    backgroundcolor=
        new Color(getIntegerParameter("backgroundcolor",16));
    textcolor=new Color(getIntegerParameter("textcolor",16));

    //Följande rader kopieras från slideshow2.java
    Dimension d=size();
    bufferimage=createImage(d.width,d.height);
    bufferg=bufferimage.getGraphics();
}

Observera nu att när vi hämtar färgerna för appleten så specifierar vi basen 16 istället för 10 på getIntegerParameter() metoden. Detta gör vi för att dessa parametrar ska kunna specifieras hexadecimalt av appletanvändaren. Parametrarna för appleten kan se ut på följande sätt:

<APPLET CODE="textscroller2.class" WIDTH=100 HEIGHT=20>
<PARAM name="message" 
value="Detta är textscroller II, nu konfigurerbar">
<PARAM name="backgroundcolor" value="ff0000">
<PARAM name="textcolor" value="0000ff">
<PARAM name="delay" value="50">
</APPLET>

Vi har här ovan satt bakgrundsfärgen till röd (FF0000) och textfärgen till blå (0000FF). Om du har problem med hexadecimala färgvärden så kan följande tabell vara till nytta:

Rött FF0000
Grönt 00FF00
Blått 0000FF
Cyan 00FFFF
Gult FFFF00
Magenta FF00FF
Svart 000000
Mörkgrått 7F7F7F
Ljusgrått AFAFAF
Vitt FFFFFF
Orange FF7F00
Mörkrött 7F0000
Mörkgrönt 007F00
Mörkblått 00007F

I paint() metoden måste nu allt ritande göras på bufferten istället för på appletskärmen. När allt är klart så ritas bufferten ut på skärmen:

public synchronized void paint(Graphics g)
{
    //det är bäst att alltid kolla att bufferg
    //är initierad.
    if (bufferg!=null)
    {
        //måla skärmen med hämtad bakgrundsfärg
        bufferg.setColor(backgroundcolor);
        bufferg.fillRect(0,0,100,20);

        //rita ut meddelandet från position x
        bufferg.setColor(textcolor);
        bufferg.drawString(message,x,12);
        g.drawImage(bufferimage,0,0,this);
        if (x<-400) x=100;
        x--;
    }
}

Observera nu att vi använder variablerna "backgroundcolor" och "textcolor" för att specifiera bakgrundsfärgen resp. textfärgen för appleten. Slutligen så gör vi en liten ändring i run() metoden så att fördröjningen kan sättas för appleten:

public void run()
{
    while (true)
    {
        update(getGraphics());

        //delay gör fördröjningen konfigurerbar
        try {Thread.sleep(delay);}
        catch(InterruptedException e) {}
    }
}

Nu är appleten färdig. Du måste dock veta att längden på texten är begränsad och appletens dimensioner måste vara 100x20. Det lönar sig inte att sitta och ändra på dimensionerna när du än så länge inte kan kontrollera textstorleken. Detta kommer du lära dig i det kommande kapitlet, som bl.a. handlar om fonter och texter. Klicka här för att se appleten.

Nu kanske du känner dig redo att starta ditt eget Java företag och översvämma Internet med dina applets efter det här kapitlet. Du skulle nog redan nu klara dig ganska bra som specialeffektsprogrammerare, men det fattas dock lite pusselbitar i din utbildning. Några av dem går vi igenom i nästa kapitel som handlar om länkar och musmeddelanden.

 

 

 

 

 

 

 


Nästa sida >>