Specialeffekter och spelutveckling
i Java(TM) - Appleten AppletAnimator II
import java.applet.*;
import java.awt.*;
public class appletanimator2 extends Applet implements Runnable {
public Thread programtrad = null;
//"maxitems" får hålla reda på hur många bilder det finns
int maxitems=0;
//"sleeptime" bestämmer fördröjningen mellan varje
//bild i sekunder
int sleeptime=0;
Image images[];
int currentimage=0;
public void init()
{
//Hämta värdet på parametern "maxitems" med
//talbasen 10
maxitems=getIntegerParameter("maxitems",10);
//Hämta värdet på parametern "sleeptime" med
//talbasen 10
sleeptime=getIntegerParameter("sleeptime",10);
//Arrayen "images" kommer att innehålla "maxitems"
//element
images=new Image[maxitems];
MediaTracker tracker=new MediaTracker(this);
for (int i=0; i < maxitems; i++)
{
//Förljande rad läser in parametrarna "image0",
//"image1", "image2" osv upp till det värde som
//maxitems anger och använder strängarna för
//att ladda in filerna som specifieras i
//parametrarna.
images[i]=getImage(getDocumentBase()
,getParameter("image"+i));
//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 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 (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 maxitems-1
if (currentimage>maxitems-1) currentimage=0;
//Variabeln sleeptime bestämmer fördröjningen
//i millisekunder.
try {Thread.sleep(sleeptime);}
catch(InterruptedException e) {}
}
}
} |
 |  |
|