⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 animateimagenoflicker.java

📁 Java 入门书的源码
💻 JAVA
字号:
//Copyright (c) 1998, Arthur Gittleman
//This example is provided WITHOUT ANY WARRANTY either expressed or implied.

/* Modifies Example 11.8 to use double buffering
 * to eliminate the flicker.
 */

import java.awt.*;
import java.applet.Applet;
import java.net.*;

public class AnimateImageNoFlicker extends Applet implements Runnable {
  private boolean done;
  private Image pic;
  private int imageWidth, imageHeight;
  private Image buffer;
  private Graphics bufferGraphics;
  private MediaTracker tracker;
  private boolean ready = false;

  public void init() { 
    pic = getImage(getDocumentBase(),"gittleman.gif");
    tracker = new MediaTracker(this);
    tracker.addImage(pic, 0);
    buffer = createImage(getSize().width,getSize().height);
    bufferGraphics = buffer.getGraphics();
  }    
  public void start() {
    done = false;
    Thread t = new Thread(this);
    t.start();
  }
  public void stop() {
    done = true;
  }
  public void update(Graphics g) {
    paint(g);
  }    
  public void paint(Graphics g) {
    if (ready) {
      bufferGraphics.clearRect(0,0,getSize().width,getSize().height);
      bufferGraphics.drawRect(8,8,imageWidth+3,imageHeight+3);

      bufferGraphics.drawImage(pic,10,10,imageWidth,imageHeight,null);
      g.drawImage(buffer,10,10,null);
    }
    else
      g.drawString("loading Image",30,30);
  }
  public void run() {
    try { 
      tracker.waitForID(0); 
    }catch (InterruptedException e) {
      e.printStackTrace();
    }
    imageWidth = pic.getWidth(null);
    imageHeight = pic.getHeight(null);
    ready = true;
    int dx=20, dy=5;
    while (true) {
      for(int i=0; i<10; i++) {
        if (done) return;
        imageWidth += dx;
        imageHeight += dy;
        repaint();  
        try {
          Thread.sleep(300);
        }catch(InterruptedException e) {
           e.printStackTrace();
        } 
      }
      dx = -dx; dy = -dy; 
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -