2012年6月12日 星期二

Java Game Development (8) - Finishing the Animation Class


import java.awt.Image;
import java.util.ArrayList;

public class Animation {
private ArrayList scenes;
private int sceneIndex;
private long movieTime; 動畫時間
private long totalTime; 場景的總時間
public Animation(){
scenes = new ArrayList();
totalTime = 0;
start();
}
//添加場景到ArrayList,並為每個場景設置時間
public synchronized void addScene(Image i, long t){ synchronized 只有這個方法運行
totalTime += t;
scenes.add(new OneScene(i,totalTime));
}

//開始動畫
public synchronized void start(){
movieTime = 0;
sceneIndex = 0;
}
//改變場景
public synchronized void update(long timePassed){
if(scenes.size()>1){
movieTime += timePassed;
if(movieTime >= totalTime){ 條件,如果動畫時間大於totalTime
movieTime = 0; 重置0
sceneIndex = 0; 重置0
}
while(movieTime > getScene(sceneIndex).endTime){ 當場景時間結束
sceneIndex++; 去下一個場景
}
}
}

//得到當前場景動畫(圖片)
public synchronized Image getImage(){
if(scenes.size()==0){
return null;
}else{
return getScene(sceneIndex).pic; 得到當前場景動畫(圖片)
}
}
//得到當前場景
private OneScene getScene(int x){
return (OneScene)scenes.get(x); 得到當前場景動畫(Index
}
//private inner class
private class OneScene{
Image pic;
long endTime;
public OneScene(Image pic,long endTime){
this.pic = pic;
this.endTime = endTime;
}
}

}

沒有留言:

張貼留言