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) {}
}
}
} |
 |  |
|