home *** CD-ROM | disk | FTP | other *** search
/ AOL File Library: 12,000 to 12,999 / 12000.zip / AOLDLs / Online-Tools / Java-Applets / JAVAAPPS.lzh / JAVAAPPS / MARCUS / MARCUS.EXE / Marcus.java < prev    next >
Encoding:
Java Source  |  1996-03-11  |  3.6 KB  |  173 lines

  1. import java.applet.*;
  2.  
  3. import java.awt.*;
  4.  
  5. import java.net.*;
  6.  
  7.  
  8.  
  9. class Animate extends Thread
  10.  
  11. {
  12.  
  13.   Marcus mskay;
  14.  
  15.  
  16.  
  17.   public Animate(Marcus who)
  18.  
  19.   {
  20.  
  21.     mskay = who;
  22.  
  23.   }
  24.  
  25.  
  26.  
  27.   public void run()
  28.  
  29.   {
  30.  
  31.     while(mskay.running)
  32.  
  33.     {
  34.  
  35.     mskay.advanceFrame();
  36.  
  37.       mskay.repaint();
  38.  
  39.     try
  40.  
  41.     {
  42.  
  43.       sleep(mskay.sleeptime);
  44.  
  45.     }
  46.  
  47.     catch(Exception e){}
  48.  
  49.     }
  50.  
  51.   }
  52.  
  53. }
  54.  
  55.  
  56.  
  57. public class Marcus extends Applet
  58.  
  59. {
  60.  
  61.   int nframe;
  62.  
  63.   Image image[];
  64.  
  65.   AudioClip audio[];
  66.  
  67.   URL url[];
  68.  
  69.   int sleeptime;
  70.  
  71.   MediaTracker tracker;
  72.  
  73.   Animate animate;
  74.  
  75.   int frame;
  76.  
  77.   boolean running;
  78.  
  79.  
  80.  
  81.   private Image offScreenImage;
  82.  
  83.   private Dimension offScreenSize;
  84.  
  85.   private Graphics offScreenGraphics;
  86.  
  87.  
  88.  
  89.   public void advanceFrame()
  90.  
  91.   {
  92.  
  93.     frame = (frame + 1) % nframe;
  94.  
  95.   }
  96.  
  97.  
  98.  
  99.   public void init()
  100.  
  101.   {
  102.  
  103.     String parameter;
  104.  
  105.  
  106.  
  107.     // init number of frames
  108.  
  109.     parameter = getParameter("nframe");
  110.  
  111.     if (parameter == null)
  112.  
  113.       System.out.println("Error: invalid parameter: nframe");
  114.  
  115.     else
  116.  
  117.       nframe = Integer.parseInt(parameter);
  118.  
  119.  
  120.  
  121.     // init images
  122.  
  123.     image = new Image[nframe];
  124.  
  125.     tracker = new MediaTracker(this);
  126.  
  127.     for (int i = 0; i < nframe; i++)
  128.  
  129.     {
  130.  
  131.       parameter = getParameter("image"+i);
  132.  
  133.       if (parameter == null)
  134.  
  135.         System.out.println("Error: invalid parameter: image"+i);
  136.  
  137.       else
  138.  
  139.       {
  140.  
  141.         image[i] = getImage(getDocumentBase(), parameter);
  142.  
  143.         tracker.addImage(image[i], i);
  144.  
  145.       }
  146.  
  147.     }
  148.  
  149.     try
  150.  
  151.     {
  152.  
  153.       tracker.waitForAll();
  154.  
  155.     }
  156.  
  157.     catch (InterruptedException e)
  158.  
  159.     {
  160.  
  161.       System.out.println("Error waiting for image to load.");
  162.  
  163.     }
  164.  
  165.  
  166.  
  167.     // init audio
  168.  
  169.     audio = new AudioClip[nframe];
  170.  
  171.     for (int i = 0; i <nframe; i++)
  172.  
  173.     {
  174.  
  175.       parameter = getParameter("audio"+i);
  176.  
  177.       if (parameter != null)
  178.  
  179.         audio[i] = getAudioClip(getDocumentBase(), parameter);
  180.  
  181.     }
  182.  
  183.  
  184.  
  185.     // init url
  186.  
  187.     url = new URL[nframe];
  188.  
  189.     for (int i = 0; i <nframe; i++)
  190.  
  191.     {
  192.  
  193.       parameter = getParameter("url"+i);
  194.  
  195.       if (parameter != null)
  196.  
  197.       {
  198.  
  199.           try
  200.  
  201.           {
  202.  
  203.               url[i] = new URL(parameter);
  204.  
  205.          }
  206.  
  207.           catch(MalformedURLException mal)
  208.  
  209.           {
  210.  
  211.              System.out.println("Error locating URL address.");
  212.  
  213.           }
  214.  
  215.       }
  216.  
  217.     }
  218.  
  219.  
  220.  
  221.     // init sleep time
  222.  
  223.     parameter = getParameter("sleeptime");
  224.  
  225.     if (parameter == null)
  226.  
  227.       sleeptime = 1000;
  228.  
  229.     else
  230.  
  231.       sleeptime = Integer.parseInt(parameter);      
  232.  
  233.   }
  234.  
  235.  
  236.  
  237.   public void paint (Graphics g)
  238.  
  239.   {
  240.  
  241.     g.drawImage(image[frame], 0, 0, null);    
  242.  
  243.   }
  244.  
  245.  
  246.  
  247.   public final synchronized void update (Graphics g)
  248.  
  249.   {
  250.  
  251.     Dimension d = size();
  252.  
  253.     if((offScreenImage == null) || (d.width != offScreenSize.width) ||  (d.height != offScreenSize.height))
  254.  
  255.     {
  256.  
  257.       offScreenImage = createImage(d.width, d.height);
  258.  
  259.       offScreenSize = d;
  260.  
  261.       offScreenGraphics = offScreenImage.getGraphics();
  262.  
  263.     }
  264.  
  265.     offScreenGraphics.setColor(getBackground());
  266.  
  267.     offScreenGraphics.fillRect(0, 0, d.width, d.height);
  268.  
  269.     paint(offScreenGraphics);
  270.  
  271.     g.drawImage(offScreenImage, 0, 0, null);
  272.  
  273.   }
  274.  
  275.  
  276.  
  277.  
  278.  
  279.   public void stop()
  280.  
  281.   {
  282.  
  283.     running = false;
  284.  
  285.     destroy();
  286.  
  287.   }
  288.  
  289.  
  290.  
  291.   public boolean mouseDown(Event evt, int x, int y)
  292.  
  293.   {
  294.  
  295.     if (audio[frame] != null)
  296.  
  297.           audio[frame].play();
  298.  
  299.     return true;
  300.  
  301.   }
  302.  
  303.   public boolean mouseUp(Event evt, int x, int y)
  304.  
  305.   {
  306.  
  307.     if (url[frame] != null)
  308.  
  309.       getAppletContext().showDocument(url[frame]);
  310.  
  311.     return true;
  312.  
  313.   }
  314.  
  315.  
  316.  
  317.   public boolean mouseEnter(Event evt, int x, int y)
  318.  
  319.   {
  320.  
  321.     running = true;
  322.  
  323.         animate = new Animate(this);
  324.  
  325.         animate.start();
  326.  
  327.     return true;
  328.  
  329.   }
  330.  
  331.  
  332.  
  333.   public boolean mouseExit(Event evt, int x, int y)
  334.  
  335.   {
  336.  
  337.     running = false;
  338.  
  339.     return true;
  340.  
  341.   }
  342.  
  343. }
  344.  
  345.