Specialeffekter och spelutveckling
i Java(TM) - Appleten AppletAnimator
import java.applet.*;
import java.awt.*;
public class appletanimator extends Applet implements Runnable {
public Thread programtrad = null;
//ImageArrayen "images" får vara global
Image images[];
//"currentimage" får hålla reda på vilken bild som visas
int currentimage=0;
public void init()
{
//initiera "images" med fyra element
images=new Image[4];
MediaTracker tracker=new MediaTracker(this);
//vi använder oss av en for-slinga för att ladda
//in bilderna
for (int i=0; i < 4; i++)
{
//"bild0.gif","bild1.gif",...,"bild3.gif" kommer att
//laddas in.
images[i]=getImage(getDocumentBase(),"bild"+i+".gif");
//identitetsnummret för varje bild måste ökas för
//varje bild man lägger in i spåraren
tracker.addImage(images[i],i);
}
//slutligen så ser vi till att spåraren laddar in bilderna
try {tracker.waitForAll();}
catch(InterruptedException e)
{
System.out.println("Någonting stoppade inladdningen...");
}
}
public void start()
{
if (programtrad == null)
{
programtrad = new Thread(this,"programtrad");
programtrad.start();
}
}
public void stop()
{
if ((programtrad != null) && programtrad.isAlive())
programtrad.stop();
programtrad = null;
}
public synchronized void paint(Graphics g)
{
//Integern "currentimage" används som index för "images"
g.drawImage(images[currentimage],0,0,this);
}
public void update(Graphics g)
{
paint(g);
}
public void run()
{
while (true)
{
update(getGraphics());
//"currentimage" ökas på så att nästa bild visas vid
//nästa skärm-uppdatering
currentimage++;
//Den får dock inte överstiga indexsiffran 3
if (currentimage > 3) currentimage=0;
try {Thread.sleep(200);}
catch(InterruptedException e) {}
}
}
} |
 |  |
|