遊戲動畫由關鍵幀(keyframe)組成.將它地依次連續渲染產生運動效果.上圖每幀尺寸64*64像素一共四幀.為產生動畫效果需每隔若干毫秒渲染一幀.當渲染到最後一幀時可選擇重新播放或停止播放.通常要實現『行走』『跳躍』『攻擊』『倒下』需要定義動畫結構
public class ANIMATION {
保存紋理圖檔只能關鍵幀位置.並且其順序與動畫回放順序相同
public REGION[] frames = null;
保存每幀間隔時間,用於確定每幀切換時間.
public float duration;
動畫播放模式,分為『循環播放』與『單次播放』
public static final int LOOPING = 0;
public static final int NONLOOPING = 1;
構建動畫輸入『每幀間隔』與每幀『紋理區域』
ANIMATION(float duration,REGION … frames){
this.duration = duration;
this.frames = frames;
}
輸入時間提取關鍵幀.播放模式是單次或循環,基於『狀態時間』除以『每幀間隔』計算幀索引.
public REGION GetKeyFrame(float stateTime,int mode){
int index = (int)(stateTime/duration);
if(mode == NONLOOPING)// 單次播放
index = Math.min(frames.length-1, index);
else
index = index % frames.length;
return frames[index];
}