next up previous contents
Nächste Seite: XML Aufwärts: Animationen Vorherige Seite: Systemuhrzeit in einem Applet   Inhalt

Animationen

Animationen können mit Hilfe von Threads gut gesteuert werden. Wir verwenden dazu einige Bilddateien, die der Reihe nach geladen und angezeigt werden:


\includegraphics[width=1cm]{anim0.ps} \includegraphics[width=1cm]{anim1.ps} \includegraphics[width=1cm]{anim2.ps} \includegraphics[width=1cm]{anim3.ps}

import java.awt.Graphics;
import java.awt.Image;
import java.applet.*;

public class Animationen extends Applet implements Runnable {

    Thread proz;
    Image animimg[] = new Image[4];
    Image bild;

    public void init () {
        String animsrc[] = {"anim0.jpg", "anim1.jpg", "anim2.jpg", "anim3.jpg"};
        for (int i=0; i<4; i++) animimg[i] = getImage(getDocumentBase(), animsrc[i]);
    }

    public void start() {
        if (proz == null) {
            proz = new Thread(this);
            proz.start();
        }
    }

    public void run() {
        while (proz == Thread.currentThread()) {
            for (int i=0; i<4; i++) {
                bild = animimg[i];
                repaint();
                try {
                    Thread.sleep(1000);
                }
                catch (InterruptedException ie) {
                    System.out.println("und aus..");
                }
            }
        }
    }

    public void update (Graphics g) {
        paint(g);
    }

    public void paint (Graphics g) {
        g.drawImage(bild, 15,15, this);
    }
}

Dieses Applet zeigt die Animation, die dadurch zu Stande kommt, dass vier Bilder hintereinander auf den gleichen Bildschirmausschnitt gezeichnet werden. Die Bilddateien tragen die Namen anim0.jpg, anim1.jpg, anim2.jpg und anim0.jpg und liegen im gleichen Verzeichnis wie die HTML- und Klassendatei.


\includegraphics[width=2.5cm]{ThAnimationen.ps}


Die Methode getImage(getDocumentbase(), Dateiname lädt die angegebene Bilddatei in die Image-Variable. Im Beispiel werden alle vier Bilder in einem Image-Array gespeichert. Die Ausgabe eines BIldes erfolgt mit der Graphic-Methode drawImage(Imagevariable, x-pos, y-pos, this. Im Beispiel wird das jeweilige Bild in die Hilfsvariable bild geladen. Der Aufruf von repaint() aktualisiert die Grafik: Da die Methode repaint() immer zuerst die Methode update() aufruft, die ihrerseits als erstes die Ausgabefläche des Applets löscht, ``flackert'' die Animation. Durch das Überschreiben der update()-Methode wird dies verhindert: update() ruft im Beispiel sofort die Methode paint() auf...


next up previous contents
Nächste Seite: XML Aufwärts: Animationen Vorherige Seite: Systemuhrzeit in einem Applet   Inhalt
Alfred Nussbaumer 2003-02-10