Hem E-böcker Specialeffekter och spelutveckling i Java En dataterminal i statusfönstret

Specialeffekter och spelutveckling i Java(TM) - En dataterminal i statusfönstret (statusdatatext)

av Anibal Wainstein 
 
3.1.2 En dataterminal i statusfönstret (statusdatatext)  

Terminaler i början av 80-talet var ganska slöa och hade ett speciellt sätt att skriva ut meningar. Vi ska här försöka simulera  den effekten fast på statusfönstret och med bara en mening. 

Gör en kopia av föregående Java fil och skriv om init() metoden till följande: 

public void init()
{
    meddelande="Preparing to launch....";
    meddelande+="6... 5... 4... 3... 2... 1... 0...";
}
Nu behöver vi inte ett blanktecken före meddelandet eftersom nu kommer meddelandet att stå still i början av statusfönstret. Skriv om run() metoden till följande: 
public void run()
{
    int L=meddelande.length();
    boolean visamarkor=false;

    //skriv ut meddelandet steg för steg
    for (int i=0; i<L; i++)
    {
        if (visamarkor) 
            showStatus(meddelande.substring(0,i)+"_");
        else showStatus(meddelande.substring(0,i));
        visamarkor=!visamarkor;
        try {Thread.sleep(100);}
        catch(InterruptedException e) {}
    }
    //meddelandet är utskrivet. Låt markören blinka.
    while (true)
    {
        if (visamarkor) showStatus(meddelande+"_");
        else showStatus(meddelande);
        visamarkor=!visamarkor;
        try {Thread.sleep(100);}
        catch(InterruptedException e) {}
    }
}
Effekten är uppdelad i två steg och i två slingor. Det första vi gör innan slingorna är att initiera en variabel som kommer att användas för marköreffekten ("visamarkor"). 
Denna kommer vi att sätta till sant när den är falskt och vice versa inne i slingorna med följande uttryck: 
visamarkor=!visamarkor;
Kommandot "!" betyder negering eller motsats. Så "visamarkor" kommer att sättas till motsatsen av sig själv. När denna variabel är sann då kommer markören att visas, som i vårt fall råkar vara ett underscore-tecken "_", genom att den läggs på strängen innan den skall skrivas ut på statusfönstret. I for-slingan så skriver vi ut meddelandet steg för steg med substring() metoden (plus markören) och har en väntepaus efter utskriften. 
While-slingan i run()-metoden ser till att fånga tråden för alltid och står och animerar markören. Den behövs för att göra effekten lite mer realistiskt. 

Klicka här för att se statusdatatext i aktion. 

Observera, vill du snabba upp effekterna i det här och förra avsnittet så minska pausen i sleep() metoden. Du får dock räkna med en mer krävande applet. I mer komplicerade effekter som kräver många beräkningar kan detta bli ett stort problem, som vi kommer att se längre fram i andra avsnitt. 
 


Nästa sida >>