easyCam.java
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:2k
源码类别:

DSP编程

开发平台:

C/C++

  1. import java.awt.*;
  2. import java.applet.*;
  3. import java.net.*;
  4. public class easyCam extends Applet {
  5.   private Image  myImage = null;
  6.   private int startIndex = 1;
  7.   private int endIndex = 9;
  8.   private int currentIndex;
  9.   private int sleepTime = 500;
  10.   private String fileBase;
  11.   private String fileExtension;
  12.   private Thread timerThread;
  13.   private volatile boolean noStopRequested;
  14.   private MediaTracker tracker;
  15.   public void init() {
  16.     tracker = new MediaTracker(this);
  17. String strStartIndex = getParameter("STARTINDEX");
  18. String strEndIndex   = getParameter("ENDINDEX");
  19.     String strSleepTime  = getParameter("MSDELAY");
  20.     fileBase             = getParameter("FILEBASE");
  21. fileExtension        = getParameter("FILEEXT");
  22.     if (strStartIndex != null)
  23.     startIndex = Integer.parseInt(strStartIndex);
  24.     if (strEndIndex != null)
  25.     endIndex = Integer.parseInt(strEndIndex);
  26.     if (strSleepTime != null)
  27.     sleepTime = Integer.parseInt(strSleepTime);
  28.     startThread();
  29.   }
  30.   private void startThread() {
  31.     noStopRequested = true;
  32.     Runnable r = new Runnable() {
  33.       public void run() {
  34.         runWork();
  35.       }
  36.     };
  37.     timerThread = new Thread(r, "Timer");
  38.     timerThread.start();
  39.   }
  40.   private void stopThread() {
  41.     noStopRequested = false;
  42.     timerThread.interrupt();
  43.   }
  44.   private void runWork() {
  45.     currentIndex = startIndex;
  46.     boolean imageload = false;
  47.     try {
  48.       while ( noStopRequested ) {
  49.         currentIndex = currentIndex + 1;
  50.         if( currentIndex > endIndex )
  51.           currentIndex = startIndex;
  52.         if( imageload == true ) {
  53.       tracker.removeImage(myImage);
  54.           myImage.flush();
  55.           myImage = null;
  56.     }
  57.         myImage = getImage(getDocumentBase(), fileBase + Integer.toString(currentIndex) + fileExtension);
  58.     tracker.addImage(myImage, 0);
  59. tracker.waitForAll();
  60.     imageload = true;
  61.         repaint();
  62.         Thread.sleep( sleepTime );
  63.       }
  64.     } catch ( InterruptedException x ) {
  65.       Thread.currentThread().interrupt();
  66.     }
  67.   }
  68.   public void paint(Graphics g) {
  69.     update(g);
  70.   }
  71.   public void update(Graphics g) {
  72. if( myImage != null ) {
  73.   g.drawImage(myImage, 0, 0, this);
  74.     }
  75.   }
  76.   public void destroy() {
  77.     stopThread();
  78.     myImage.flush();
  79.     myImage = null;
  80.   }
  81. }