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

📄 rotator.java

📁 几个基础的java Applet程序
💻 JAVA
字号:
import java.awt.* ;
//定义Ratator类
public class Rotator extends java.applet.Applet implements Runnable {
  int   frameWidth, frameHeight;//每一帧的宽和高
  int   nColumns = 1;//横向的帧数
  int   nRows = 1;//纵向的帧数
  int   nFrames = 1;//帧数
  int   delay = 167;  //毫秒(6帧/秒)
  int   frame = 0;
  boolean suspended = false;
  Thread  spinThread ;//定义动画线程
  Image   spinImage;
  //初始化,获取参数
  public void init() {
    String param = getParameter("width");
    if (param != null)
       frameWidth = Integer.parseInt(param);
    param = getParameter("height");
    if (param != null)
       frameHeight = Integer.parseInt(param);
    param = getParameter("frames");
    if (param != null)
       nFrames = Integer.parseInt(param);
    param = getParameter("rate");
    if (param != null)
       delay =1000 / Integer.parseInt(param);
    param = getParameter("columns");
    if (param != null)
       nColumns = Integer.parseInt(param);
    param = getParameter("rows");
    if (param != null)
       nRows = Integer.parseInt(param);
    if (delay < 10)
       delay = 10;
    if (nFrames == 1)
       nFrames = nColumns * nRows;
    if (nColumns == 1 && nRows == 1)
       nColumns = nFrames;
    spinImage = getImage(getCodeBase(), getParameter("image"));
   }
  //run()方法,负责播放图片,由线程调用
  public void run() {
    while (spinThread != null) {
       repaint() ;
       try {
         spinThread.sleep(delay);
       }
       catch (InterruptedException e) { }
    }
  }
  //update()方法,调用paint()方法
  public void update(Graphics g) {
    paint(g);
  }
  //paint()方法,负责在屏幕上绘制图像
  public void paint(Graphics g) {
  //画当前帧,使用负数坐标以便在画图时剪切帧
    g.drawImage ( spinImage,
        -frameWidth * (frame % nColumns),
        -frameHeight * ((frame / nColumns) % nRows),
        this );
    //检查绘制的图像是否是最后一幅,然后返回第一幅    
    if (++frame  == nFrames) frame = 0;
  }
  //处理鼠标事件
  public boolean mouseDown(Event evt, int x, int y) {
      if (suspended)
         spinThread.resume();
      else
         spinThread.suspend();
      suspended = !suspended;
      return true;
  }
  //启动线程
  public void start() {
    if (spinThread == null) {
      spinThread = new Thread (this, "Spin");
      spinThread.start();
    }
  }
  //停止线程
  public void stop() {
    spinThread.stop();
    spinThread = null;
  }
}

⌨️ 快捷键说明

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