Hem E-böcker Specialeffekter och spelutveckling i Java Appleten TextScroller II

Specialeffekter och spelutveckling i Java(TM) - Appleten TextScroller II

  
import java.applet.*;
import java.awt.*;

public class textscroller2 extends Applet implements Runnable {

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;

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ärg
    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();
}

public int getIntegerParameter(String name, int base)
{
    String value=getParameter(name);
    int intvalue;
    try {intvalue=Integer.parseInt(value,base);}
    catch (NumberFormatException e) {return 0;}
    return intvalue;
}

public void start()
{
    if (programthread == null)
    {
         programthread = new Thread(this,"programtrad");
         programthread.start();
    }
}

public void stop()
{
    if ((programthread != null) && programthread.isAlive())
        programthread.stop();
    programthread = null;
}

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

public void update(Graphics g)
{
    paint(g);
}

public void run()
{
    while (true)
    {
        update(getGraphics());
        //delay gör fördröjningen konfigurerbar
        try {Thread.sleep(delay);}
        catch(InterruptedException e) {}
    }
}
}