// * @(#)Tumble.java // * @author James Gosling import java.io.*; import java.applet.*; import java.awt.*; import java.net.*; public class test007 extends Applet implements Runnable { int loopslot = 0; Thread kicker = null; int pause = 1000; int offset = 0; int off; int speed = 100; int nimgs = 15; Image imgs[]; int maxWidth; public void init() { maxWidth = 0; setBackground(Color.black); } public void run() { Thread.currentThread().setPriority(Thread.NORM_PRIORITY-1); imgs = new Image[nimgs]; for (int i = 1; i < nimgs; i++) { imgs[i] = getImage(getDocumentBase(), "../gif/b" + i + ".gif"); } Dimension d = size(); if (nimgs > 1) { if (offset < 0) { off = d.width - maxWidth; } while (kicker != null) { if (++loopslot >= nimgs) { loopslot = 0; off += offset; if (off < 0) { off = d.width - maxWidth; } else if (off + maxWidth > d.width) { off = 0; } } repaint(); try { Thread.sleep(speed + ((loopslot == nimgs - 1) ? pause : 0)); } catch (InterruptedException e) { break; } } } } public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h) { if ((flags & (SOMEBITS|FRAMEBITS|ALLBITS)) != 0) { if ((imgs != null) && (loopslot < nimgs) && (imgs[loopslot] == img)) { repaint(100); } } return (flags & (ALLBITS|ERROR)) == 0; } public void paint(Graphics g) { if ((imgs != null) && (loopslot < nimgs) && (imgs[loopslot] != null)) { g.drawImage(imgs[loopslot], off, 10, this); } } public void start() { if (kicker == null) { kicker = new Thread(this); kicker.start(); } } public void stop() { if (kicker != null) { kicker.stop(); kicker = null; } } }