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