home *** CD-ROM | disk | FTP | other *** search
/ Supercompiler 1997 / SUPERCOMPILER97.iso / Ms_vj / Samples / JavaNow / Chap16 / Animation / Animation.class (.txt) next >
Encoding:
Java Class File  |  1996-07-29  |  3.4 KB  |  156 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.Rectangle;
  7. import java.awt.image.ImageObserver;
  8.  
  9. public class Animation extends Applet implements Runnable {
  10.    Thread m_Animation;
  11.    private Graphics m_Graphics;
  12.    private Image[] m_Images;
  13.    private int m_nCurrImage;
  14.    private int m_nImgWidth;
  15.    private int m_nImgHeight;
  16.    private boolean m_fAllLoaded;
  17.    private int m_fps = 10;
  18.    private String m_imageFile = "LJN";
  19.    private int m_numImages = 22;
  20.    private final String PARAM_fps = "fps";
  21.    private final String PARAM_imageFile = "imageFile";
  22.    private final String PARAM_numImages = "numImages";
  23.  
  24.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  25.       if (this.m_fAllLoaded) {
  26.          return false;
  27.       } else if ((var2 & 32) == 0) {
  28.          return true;
  29.       } else {
  30.          if (++this.m_nCurrImage == this.m_numImages) {
  31.             this.m_nCurrImage = 0;
  32.             this.m_fAllLoaded = true;
  33.          }
  34.  
  35.          return false;
  36.       }
  37.    }
  38.  
  39.    public void start() {
  40.       if (this.m_Animation == null) {
  41.          this.m_Animation = new Thread(this);
  42.          this.m_Animation.start();
  43.       }
  44.  
  45.    }
  46.  
  47.    public String[][] getParameterInfo() {
  48.       String[][] var1 = new String[][]{{"fps", "int", "Frame rate"}, {"imageFile", "String", "Name of the image seq"}, {"numImages", "int", "Number of images"}};
  49.       return var1;
  50.    }
  51.  
  52.    public void stop() {
  53.       if (this.m_Animation != null) {
  54.          this.m_Animation.stop();
  55.          this.m_Animation = null;
  56.       }
  57.  
  58.    }
  59.  
  60.    private void displayImage(Graphics var1) {
  61.       if (this.m_fAllLoaded) {
  62.          var1.drawImage(this.m_Images[this.m_nCurrImage], 0, 0, (ImageObserver)null);
  63.          var1.setColor(Color.white);
  64.          var1.drawString("Image #" + this.m_nCurrImage, 10, 20);
  65.       }
  66.    }
  67.  
  68.    public String getAppletInfo() {
  69.       return "Name: Animation\r\n" + "Author: Stephen R. Davis\r\n" + "Created for Learn Java Now (c)";
  70.    }
  71.  
  72.    public void run() {
  73.       ((Component)this).repaint();
  74.       this.m_Graphics = ((Component)this).getGraphics();
  75.       this.m_nCurrImage = 0;
  76.       this.m_Images = new Image[this.m_numImages];
  77.  
  78.       for(int var2 = 1; var2 <= this.m_numImages; ++var2) {
  79.          String var1 = this.m_imageFile + (var2 < 10 ? "0" : "") + var2 + ".gif";
  80.          this.m_Images[var2 - 1] = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var1);
  81.          if (this.m_nImgWidth == 0) {
  82.             try {
  83.                while((this.m_nImgWidth = this.m_Images[var2 - 1].getWidth((ImageObserver)null)) < 0) {
  84.                   Thread.sleep(1L);
  85.                }
  86.  
  87.                while((this.m_nImgHeight = this.m_Images[var2 - 1].getHeight((ImageObserver)null)) < 0) {
  88.                   Thread.sleep(1L);
  89.                }
  90.  
  91.                ((Applet)this).resize(this.m_nImgWidth, this.m_nImgHeight);
  92.             } catch (InterruptedException var6) {
  93.             }
  94.          }
  95.  
  96.          this.m_Graphics.drawImage(this.m_Images[var2 - 1], -1000, -1000, this);
  97.       }
  98.  
  99.       while(!this.m_fAllLoaded) {
  100.          try {
  101.             Thread.sleep(10L);
  102.          } catch (InterruptedException var4) {
  103.          }
  104.       }
  105.  
  106.       ((Component)this).repaint();
  107.       int var7 = 1000 / this.m_fps;
  108.  
  109.       while(true) {
  110.          try {
  111.             this.displayImage(this.m_Graphics);
  112.             ++this.m_nCurrImage;
  113.             if (this.m_nCurrImage == this.m_numImages) {
  114.                this.m_nCurrImage = 0;
  115.             }
  116.  
  117.             Thread.sleep((long)var7);
  118.          } catch (InterruptedException var5) {
  119.             this.stop();
  120.          }
  121.       }
  122.    }
  123.  
  124.    public void destroy() {
  125.    }
  126.  
  127.    public void init() {
  128.       String var1 = ((Applet)this).getParameter("fps");
  129.       if (var1 != null) {
  130.          this.m_fps = Integer.parseInt(var1);
  131.       }
  132.  
  133.       var1 = ((Applet)this).getParameter("imageFile");
  134.       if (var1 != null) {
  135.          this.m_imageFile = var1;
  136.       }
  137.  
  138.       var1 = ((Applet)this).getParameter("numImages");
  139.       if (var1 != null) {
  140.          this.m_numImages = Integer.parseInt(var1);
  141.       }
  142.  
  143.       ((Applet)this).resize(320, 240);
  144.    }
  145.  
  146.    public void paint(Graphics var1) {
  147.       if (this.m_fAllLoaded) {
  148.          Rectangle var2 = var1.getClipRect();
  149.          var1.clearRect(var2.x, var2.y, var2.width, var2.height);
  150.          this.displayImage(var1);
  151.       } else {
  152.          var1.drawString("Loading images...", 10, 20);
  153.       }
  154.    }
  155. }
  156.