📄 animationstrip.java
字号:
package like.graphics;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
/********************************************************
*定义一个动态链表,容纳用于Animator对象显示动画用的图象帧
*创建一个AnimationStrip必须调用setPE()和setAnimator()函数
*********************************************************/
public class AnimationStrip
{
public static ImageObserver observer;
//图象链表以及链表的大小
protected LinkedList frames;
protected int numFrames;//为0时不可用啊!!!!!!!!
//冲突检测用大小
protected int posWidth;
protected int posHeight;
//绘画偏差
private int excursionx;
private int excursiony;
//负责放映帧的Animaor
protected int AnimatorMode;
//创建一个空的AnimationStrip对象
public AnimationStrip()
{
frames = null;
numFrames = 0;
}
//设置图象的2d世界里的长和宽(不是图片的长宽)和相对图片的偏差,实际画的时候加上偏差
public void setPE(int posWidth,int posHeight,int excursionx,int excursiony)
{
this.posWidth = posWidth;
this.posHeight = posHeight;
this.excursionx = excursionx;
this.excursiony = excursiony;
}
public Animator createNewAnimator()
{
Animator animator = null;
switch(this.AnimatorMode)
{
case Animator.AnimatorMode_Indexed:
animator = new Animator.Indexed();
break;
case Animator.AnimatorMode_Looped :
animator = new Animator.Looped();
break;
case Animator.AnimatorMode_OneShot:
animator = new Animator.OneShot();
break;
case Animator.AnimatorMode_Randoms:
animator = new Animator.Randoms();
break;
case Animator.AnimatorMode_Single :
animator = new Animator.Single();
break;
}
animator.frames = frames;
return animator;
}
public void setAnimatorMode(int mode)
{
this.AnimatorMode = mode;
}
//把图象帧添加到链表中
public void addFrame(Image image)
{
if(frames == null)
{
frames = new LinkedList();
numFrames = 1;
}
frames.add(image);
numFrames++;
}
//返回冲突检测用大小
public int getPosWidth()
{
return this.posWidth;
}
public int getPosHeight()
{
return this.posHeight;
}
//返回偏差
public int getExcrusionx()
{
return this.excursionx;
}
public int getExcrusiony()
{
return this.excursiony;
}
//返回帧数
public int getNumFrames()
{
return numFrames;
}
//返回Animator的当前帧
public Image getCurrFrame(Animator animator)
{
if(frames != null)
{
return animator.getCurrFrame();
}
return null;
}
//返回指定下标对应的帧
public Image getFrame(int index)
{
if(frames != null && index>=0 && index<numFrames)
{
return (Image)frames.get(index);
}
return null;
}
//返回Animator的下一帧动画
public Image getNextFrame(Animator animator)
{
if(frames != null)
{
animator.nextFrame();
return animator.getCurrFrame();
}
return null;
}
//返回第一帧动画
public Image getFirsrFrame()
{
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(Animator animator)
{
if(animator != null)
{
animator.reset();
}
}
//返回动画帧的宽度
public int getFrameWidth()
{
if(frames != null&& !frames.isEmpty())
{
return this.getFirsrFrame().getWidth(this.observer);
}
return 0;
}
//返回动画帧的高度
public int getFrameHeight()
{
if(frames != null&& !frames.isEmpty())
{
return this.getFirsrFrame().getHeight(this.observer);
}
return 0;
}
}//AnimatorStrip
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -