所以我有一個動畫類,我想包括旋轉動畫的能力。並非我繪製的每個動畫都需要旋轉,所以如果我可以將其設置爲可選參數,那將非常棒。此刻,我會解決只是畫一個旋轉的框架。旋轉和繪製動畫的單幀
對不起,如果這個問題很難看,我對Java和這個論壇都很陌生,但是我真的很感謝在這個問題上的任何建議。與C#相比,Java在執行類似此類簡單任務時似乎採取的直接路徑要少得多,但我確信這是很好的理由。
任何關於這段代碼的建議或者用java編寫遊戲都會被記住,感謝您的時間!
public class Animation {
public BufferedImage animImage;
private int frameWidth;
private int frameHeight;
private int numberOfFrames;
private long frameTime;
private long startingFrameTime;
private long timeForNextFrame;
public int currentFrameNumber;
private boolean loop;
public int x;
public int y;
private int startingXOfFrameInImage;
private int endingXOfFrameInImage;
public boolean active;
private long showDelay;
private long timeOfAnimationCreation;
public int segmentStart;
public int segmentEnd;
public Animation(BufferedImage animImage, int frameWidth, int frameHeight, int numberOfFrames, long frameTime, boolean loop, int x, int y, long showDelay, int startFrame, int endFrame)
{
this.animImage = animImage;
this.frameWidth = frameWidth;
this.frameHeight = frameHeight;
this.numberOfFrames = numberOfFrames;
this.frameTime = frameTime;
this.loop = loop;
this.segmentStart = startFrame;
this.segmentEnd = endFrame;
this.x = x;
this.y = y;
this.showDelay = showDelay;
timeOfAnimationCreation = System.currentTimeMillis();
startingXOfFrameInImage = 0;
endingXOfFrameInImage = frameWidth;
startingFrameTime = System.currentTimeMillis() + showDelay;
timeForNextFrame = startingFrameTime + this.frameTime;
currentFrameNumber = segmentStart;
active = true;
}
public void Update(){
if(timeForNextFrame <= System.currentTimeMillis()){
currentFrameNumber++;
if(currentFrameNumber < segmentStart){
currentFrameNumber = segmentStart;
}
if(currentFrameNumber > segmentEnd){
if(!loop){
active = false;
currentFrameNumber = segmentEnd;
}
else{
currentFrameNumber = segmentStart;
}
}
startingXOfFrameInImage = currentFrameNumber * frameWidth;
endingXOfFrameInImage = startingXOfFrameInImage + frameWidth;
startingFrameTime = System.currentTimeMillis();
timeForNextFrame = startingFrameTime + frameTime;
}
}
public void Draw(Graphics2D g2d){
// Checks if show delay is over.
if(this.timeOfAnimationCreation + this.showDelay <= System.currentTimeMillis())
g2d.drawImage(animImage, x, y, x + frameWidth, y + frameHeight, startingXOfFrameInImage, 0, endingXOfFrameInImage, frameHeight, null);
}
1)爲了更好地幫助越早,張貼[MCVE(http://stackoverflow.com/help/mcve)。該代碼至少需要導入和'main(String [])'成爲我們可以使用的一個例子。 2)請學習常見的[Java命名約定](http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307)(具體用於名稱的情況) ,方法和屬性名稱並一致使用它們。 –