import java.awt.*; import java.applet.*; public class test006 extends Applet implements Runnable { Image imgs[]; int nimgs = 14; int imgwidth; int x, newx; int dist = 5; int timeout = 200; Thread scroller; public void init() { newx = x = size().width; imgs = new Image[nimgs]; for (int i = 0 ; i < nimgs ; i++) { imgs[i] = getImage(getDocumentBase(), "../gif/b" + (i+1) + ".gif"); } setBackground(Color.black); } public void start() { if (scroller == null) { scroller = new Thread(this); scroller.start(); } } public void stop() { if (scroller != null) { scroller.stop(); scroller = null; } } public void run() { while (true) { try {Thread.currentThread().sleep(timeout);} catch (InterruptedException e){} scroll(dist); } } synchronized void scroll(int dist) { newx += dist; repaint(); } public void update(Graphics g) { if (newx != x) { int dist = newx - x; if (dist > 0) { g.copyArea(1, 1, (size().width-2) - dist, size().height-2, dist, 0); for (x = newx ; x > size().width ; x -= Math.max(size().width - 2, imgwidth)); paint(g, 1, dist + 1); } else { g.copyArea(1 - dist, 1, (size().width-2) + dist, size().height-2, dist, 0); for (x = newx ; x < 0 ; x += Math.max(size().width - 2, imgwidth)); paint(g, (size().width-1) + dist, size().width-1); } } else { paint(g); } } public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h) { if ((flags & WIDTH) != 0) { imgwidth += img.getWidth(this); } return super.imageUpdate(img, flags, x, y, w, h); } public void paint(Graphics g, int fromx, int tox) { int x = this.x; newx = x; g.setColor(Color.black); g.fillRect(fromx, 1, tox - fromx, size().height-2); g.clipRect(fromx, 1, tox - fromx, size().height-2); g.setColor(Color.black); for (int i = 0 ; i < nimgs ; i++) { if (imgs[i] == null) { continue; } int w = imgs[i].getWidth(this); int h = imgs[i].getHeight(this); if ((w > 0) && (h > 0)) { if ((x + w > fromx) && (x < tox)) { g.drawImage(imgs[i], x, size().height - (h+10), this); } if ((x + w) > size().width) { x -= Math.max(size().width - 2, imgwidth); if ((x + w > fromx) && (x < tox)) { g.drawImage(imgs[i], x, size().height - (h+10), this); } } x += w; } } } public void paint(Graphics g) { g.draw3DRect(0, 0, size().width, size().height, true); paint(g, 1, size().width-1); } }