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

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

}