animateButton.java
上传用户:yaoju_pan
上传日期:2007-01-07
资源大小:49k
文件大小:3k
源码类别:

Applet

开发平台:

Java

  1. import java.applet.*;
  2. import java.awt.*;
  3. import java.net.*;
  4. class Animate extends Thread
  5. {
  6.   animateButton b;
  7.   public Animate(animateButton who)
  8.   {
  9.     b = who;
  10.   }
  11.   public void run()
  12.   {
  13.     while(b.running)
  14.     {
  15. b.advanceFrame();
  16.    b.repaint();
  17. try
  18. {
  19.   sleep(b.sleeptime);
  20. }
  21. catch(Exception e){}
  22.     }
  23.   }
  24. }
  25. public class animateButton extends Applet
  26. {
  27.   int nframe;
  28.   Image image[];
  29.   AudioClip audio;
  30.   URL url;
  31.   String target;
  32.   int sleeptime;
  33.   MediaTracker tracker;
  34.   Animate animate;
  35.   int frame;
  36.   boolean running;
  37.   private Image offScreenImage;
  38.   private Dimension offScreenSize;
  39.   private Graphics offScreenGraphics;
  40.   public void advanceFrame()
  41.   {
  42. frame = (frame + 1) % nframe;
  43.   }
  44.   public void init()
  45.   {
  46. String parameter;
  47. // init number of frames
  48. parameter = getParameter("nframe");
  49. if (parameter == null)
  50.   System.out.println("Error: invalid parameter: nframe");
  51. else
  52.   nframe = Integer.parseInt(parameter);
  53. // init images
  54. image = new Image[nframe];
  55. tracker = new MediaTracker(this);
  56. for (int i = 0; i < nframe; i++)
  57. {
  58.   parameter = getParameter("image"+i);
  59.   if (parameter == null)
  60.     System.out.println("Error: invalid parameter: image"+i);
  61.   else
  62.   {
  63.     image[i] = getImage(getDocumentBase(), parameter);
  64.     tracker.addImage(image[i], i);
  65.   }
  66. }
  67. try
  68. {
  69.   tracker.waitForAll();
  70. }
  71. catch (InterruptedException e)
  72. {
  73.   System.out.println("Error waiting for image to load.");
  74. }
  75. // init audio
  76. parameter = getParameter("audio");
  77. if (parameter != null)
  78.   audio = getAudioClip(getDocumentBase(), parameter);
  79. // init url
  80. parameter = getParameter("url");
  81. if (parameter != null)
  82. {
  83.   try
  84.   {
  85.     url= new URL(parameter);
  86.   }
  87.   catch(MalformedURLException mal)
  88.   {
  89.     System.out.println("Error locating URL address.");
  90.   }
  91. }
  92. // init target window
  93. target = getParameter("target");
  94. // init sleep time
  95. parameter = getParameter("sleeptime");
  96. if (parameter == null)
  97.   sleeptime = 1000;
  98. else
  99.   sleeptime = Integer.parseInt(parameter);   
  100.   }
  101.   public void paint (Graphics g)
  102.   {
  103.     g.drawImage(image[frame], 0, 0, null);    
  104.   }
  105.   public final synchronized void update (Graphics g)
  106.   {
  107.     Dimension d = size();
  108.     if((offScreenImage == null) || (d.width != offScreenSize.width) ||  (d.height != offScreenSize.height))
  109.     {
  110.       offScreenImage = createImage(d.width, d.height);
  111.       offScreenSize = d;
  112.       offScreenGraphics = offScreenImage.getGraphics();
  113.     }
  114.     offScreenGraphics.setColor(getBackground());
  115.     offScreenGraphics.fillRect(0, 0, d.width, d.height);
  116.     paint(offScreenGraphics);
  117.     g.drawImage(offScreenImage, 0, 0, null);
  118.   }
  119.   public void stop()
  120.   {
  121. running = false;
  122. destroy();
  123.   }
  124.   public boolean mouseDown(Event evt, int x, int y)
  125.   {
  126. if (audio != null)
  127.           audio.play();
  128. return true;
  129.   }
  130.   public boolean mouseUp(Event evt, int x, int y)
  131.   {
  132. if (url != null)
  133. {
  134.   if (target != null)
  135.     getAppletContext().showDocument(url, target);
  136.   else
  137.   getAppletContext().showDocument(url);
  138. }
  139. return true;
  140.   }
  141.   public boolean mouseEnter(Event evt, int x, int y)
  142.   {
  143. running = true;
  144.         animate = new Animate(this);
  145.         animate.start();
  146. return true;
  147.   }
  148.   public boolean mouseExit(Event evt, int x, int y)
  149.   {
  150. running = false;
  151. return true;
  152.   }
  153. }