// MUESTRA UN MUNIEQUITO BRINCANDO -USO DE IMAGENES- import java.awt.*; import java.awt.event.*; public class GraphicUpdateApp extends Frame implements Runnable { Thread animation; int frameDelay = 200; Image frames[]; int numFrames; int currentFrame = 0; long lastDisplay = 0; boolean fullDisplay = false; MediaTracker tracker; int screenWidth = 400; int screenHeight = 400; public static void main(String args[]) { GraphicUpdateApp app = new GraphicUpdateApp(); } public GraphicUpdateApp() { super("Updated Graphic Animation"); setup(); pack(); setSize(screenWidth,screenHeight); addWindowListener(new WindowEventHandler()); show(); animation = new Thread(this); animation.start(); } void setup() { setupMenuBar(); setFont(new Font("default",Font.BOLD,18)); Toolkit toolkit = getToolkit(); frames = new Image[4]; frames[0] = toolkit.getImage("stickman1.gif"); frames[1] = toolkit.getImage("stickman2.gif"); frames[2] = toolkit.getImage("stickman3.gif"); frames[3] = toolkit.getImage("stickman4.gif"); numFrames = frames.length; tracker = new MediaTracker(this); for(int i=0;i<numFrames;++i) tracker.addImage(frames[i],i); } void setupMenuBar() { MenuBar menuBar = new MenuBar(); Menu fileMenu = new Menu("File"); MenuItem fileExit = new MenuItem("Exit"); fileExit.addActionListener(new MenuItemHandler()); fileMenu.add(fileExit); menuBar.add(fileMenu); setMenuBar(menuBar); } public void paint(Graphics g) { if(allLoaded()) g.drawImage(frames[currentFrame],125,80,this); else { String stars = "*"; for(int i=0;i<currentFrame;++i) stars += "*"; g.drawString(stars,60,60); } } boolean allLoaded() { for(int i=0;i<numFrames;++i) if(tracker.statusID(i,true) != MediaTracker.COMPLETE) return false; return true; } public void run() { do { long time = System.currentTimeMillis(); if(time - lastDisplay > frameDelay) { if(allLoaded()) { if(fullDisplay) repaint (115,160,160,90); else { fullDisplay = true; repaint(); } } else repaint(); try { Thread.sleep(frameDelay); } catch(InterruptedException ex) { } ++currentFrame; currentFrame %= numFrames; lastDisplay = time; } } while (true); } class MenuItemHandler implements ActionListener, ItemListener { public void actionPerformed(ActionEvent ev) { String s=ev.getActionCommand(); if(s=="Exit") System.exit(0); } public void itemStateChanged(ItemEvent e) { } } class WindowEventHandler extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } }