/********************************************************************* animator.java Yksinkertainen appletti, jossa pyöritetään viiden kuvan animaatiota kuvataustan päällä. Appletti on esimerkki MediaTrackerin käytöstä kuvien lataamisessa. Tekijä: Pekka Malmirae 2/1999 Muutoksia: Appletti päivitetty Java 1.1 -mukaiseksi: * Säikeiden käsittelyssä päivitetty turvallisemmaksi (poistettu deadlock-vaarat) 11/1999, Pekka Malmirae *********************************************************************/ import java.applet.Applet; import java.awt.*; public class animator extends Applet implements Runnable { MediaTracker tracker; Image tausta; Image anim[] = new Image[5]; int index; Thread animator; public void init() { tausta = getImage(getCodeBase(), "tausta.gif"); tracker = new MediaTracker(this); for (int i = 0; i < 5; i++) { anim[i] = getImage(getDocumentBase(), "anim"+i+".gif"); tracker.addImage(anim[i], i); tracker.addImage(tausta, 5); } index = 0; } public void start() { animator = new Thread(this); animator.start(); } public void stop() { animator = null; } public void run() { try { tracker.waitForAll(); } catch (InterruptedException e) { return; } Thread tamaSaie = Thread.currentThread(); while (true) { try { tamaSaie.sleep(300); } catch (InterruptedException e) { } index++; if (index >= anim.length) index = 0; repaint(); } } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { if ((tracker.statusAll(false) & MediaTracker.ERRORED) != 0) { g.setColor(Color.red); g.fillRect(0, 0, getSize().width, getSize().height); return; } g.drawImage(tausta, 0,0,this); g.drawImage(anim[index], 60, 20, this); } }