animationstrip.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 130 行

JAVA
130
字号
 package magic.graphics;

 import java.awt.*;
 import java.awt.image.*;
 import java.util.*;

 // 定义一个动态链表,容纳用于Animator对象显示动画用的图像帧
 public class AnimationStrip extends Object
 {
      // 观察外部对象的绘制
      public static ImageObserver observer;

      // 图像帧链表,以及链表的大小
      protected LinkedList frames;
      protected int        numFrames;

      // 负责放映帧的Animator
      protected Animator animator;

      // 创建一个新的AnimationStrip对象
      public AnimationStrip()
      {
           frames    = null;
           numFrames = 0;
           animator  = null;
      }

      public final void setAnimator(Animator anim)
      {
           animator = anim;
           animator.setFrames(frames);
      }

      // 把图像帧添加到链表中
      public void addFrame(Image i)
      {
           if(frames == null)
           {
                frames = new LinkedList();
                numFrames = 0;
           }

           frames.add(i);
           numFrames++;
      }

      // 返回Animator的当前帧
      public Image getCurrFrame()
      {
           if(frames != null)
           {
                return animator.getCurrFrame();
           }
           return null;
      }

      // 让Animator产生下一帧动画
      public void animate()
      {
           if(animator != null)
           {
                animator.nextFrame();
           }
      }

      // 返回Animator的下一帧动画
      public Image getNextFrame()
      {
           if(animator != null)
           {
                animator.nextFrame();
                return animator.getCurrFrame();
           }

           return null;
      }

      // 返回第一帧动画
      public Image getFirstFrame()
      {
           if(frames != null)
           {
                return (Image)frames.getFirst();
           }

           return null;
      }

      // 返回最后一帧动画
      public Image getLastFrame()
      {
           if(frames != null)
           {
                return (Image)frames.getLast();
           }

           return null;
      }

      // 重新设置Animator内部的动画序列
      public void reset()
      {
           if(animator != null)
           {
                animator.reset();
           }
      }

      // 返回动画帧的宽度
      public int getFrameWidth()
      {
           if(frames != null && !frames.isEmpty())
           {
                return getFirstFrame().getWidth(observer);
           }
           return 0;
      }

      // 返回动画帧的高度
      public int getFrameHeight()
      {
           if(frames != null && !frames.isEmpty())
           {
                return getFirstFrame().getHeight(observer);
           }
           return 0;
      }

 }    // AnimationStrip

⌨️ 快捷键说明

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