FileDocCategorySizeDatePackage
MTImageSequenceTimer.javaAPI DocExample4598Tue Dec 12 18:59:06 GMT 2000None

MTImageSequenceTimer

public class MTImageSequenceTimer extends JApplet implements ActionListener

Fields Summary
MTPanel
mtPanel
static int
frameNumber
int
delay
static boolean
frozen
Timer
timer
boolean
error
MediaTracker
tracker
Constructors Summary
Methods Summary
public voidactionPerformed(java.awt.event.ActionEvent e)

        //Start downloading the images. Wait until they're
        //loaded before requesting repaints.
        try {
            tracker.waitForAll();
        } catch (InterruptedException exc) {}

        //Advance the frame.
        frameNumber++;

        //Display it.
        mtPanel.repaint();
    
voidbuildUI(java.awt.Container container, java.awt.Image[] dukes)

        tracker = new MediaTracker(this);
        for (int i = 1; i <= 10; i++) {
            tracker.addImage(dukes[i-1], 0);
            error = tracker.isErrorAny();
        }

        int fps = 10;

        //How many milliseconds between frames?
        delay = (fps > 0) ? (1000 / fps) : 100;

        //Set up a timer that calls this object's action handler.
        timer = new Timer(delay, this);
        timer.setInitialDelay(0);
        timer.setCoalesce(true);

        mtPanel = new MTPanel(dukes);
        container.add(mtPanel, BorderLayout.CENTER);

        mtPanel.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                if (frozen) {
                    frozen = false;
                    startAnimation();
                } else {
                    frozen = true;
                    stopAnimation();
                }
            }
       });
    
public voidinit()


    //Invoked only when run as an applet.
       
        //Load the images.
        Image images[] = new Image[10];
        for (int i = 1; i <= 10; i++) {
            images[i-1] = getImage(getCodeBase(), "images/T"+i+".gif");
        }
        buildUI(getContentPane(), images);
        startAnimation();
    
public static voidmain(java.lang.String[] args)

  
        Image[] waving = new Image[10];
        for (int i = 1; i <= 10; i++) {
            waving[i-1] =
                Toolkit.getDefaultToolkit().getImage("images/T"+i+".gif");
        }

        JFrame f = new JFrame("MTImageSequenceTimer");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        MTImageSequenceTimer controller = new MTImageSequenceTimer();
        controller.buildUI(f.getContentPane(), waving);
        controller.startAnimation();
        f.setSize(new Dimension(75, 100));
        f.setVisible(true);
    
public voidstart()

        startAnimation();
    
public synchronized voidstartAnimation()

        if (frozen) { 
            //Do nothing.  The user has requested that we 
            //stop changing the image.
        } else {
            //Start animating!
            if (!timer.isRunning()) {
                timer.start();
            }
        }
    
public voidstop()

        stopAnimation();
    
public synchronized voidstopAnimation()

        //Stop the animating thread.
        if (timer.isRunning()) {
            timer.stop();
        }