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

Specialeffekter och spelutveckling i Java(TM) - AppletAnimator II, nu konfigurerbar 

av Anibal Wainstein

4.1.3 AppletAnimator II, nu konfigurerbar

Det är inte så stora ändringar som måste göras i appleten AppletAnimator från avsnitt 4.0.4 för att göra den konfigurerbar. Vi börjar med att lägga till en variabel "maxitems" som får stå för antalet bilder applet användaren har specifierat i applet parametrarna. Värdet på den här variabeln måste användaren själv specifiera som en parameter, den får också heta "maxitems":

//"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...");
    }
}         

Appleten börjar först med att läsa in "maxitems". Den här variabeln måste innehålla det exakta antalet "image" parametrar som kommer att läsas in av appleten. Variabeln "sleeptime" specifierar fördröjningen mellan varje bild, vilket kan vara ganska nyttigt att kunna ha. Filnamnen för varje bild specifieras i parametrarna "image0", "image1" osv. Vad som händer är att for-slingan läser in en parameter och använder dess värde för att ladda in bildfilen. Konfigurationen för att få förra samma effekt som AppletAnimator exemplet gav i avsnitt 4.0.4 skulle då se ut som följande:

<APPLET CODE="appletanimator2.class" WIDTH=100 HEIGHT=100>
<PARAM name="maxitems" value="4">
<PARAM name="sleeptime" value="200">
<PARAM name="image0" value="bild0.gif">
<PARAM name="image1" value="bild1.gif">
<PARAM name="image2" value="bild2.gif">
<PARAM name="image3" value="bild3.gif">
</APPLET>

Appleten är annu inte klar. Vi måste göra två små ändringar i run() metoden också:

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

Observera att nu är "maxitems-1" den övre gränsen för "currentimage" och fördröjningen bestäms nu av variabeln "sleeptime". Äntligen är det dags att visa vår första konfigurerbara applet. För att visa hur samma applet kan konfigureras om och på så sätt se helt annorlunda ut, använder vi den som en enkel bildvisare med sex landskapsbilder. Vi ökar fördröjningen till 2000 millisekunder (2 sekunder) samt sätter "maxitems" till 6. Klicka här!

 


Nästa sida >>