所以我有一个动画类,我想包括旋转动画的能力。并非我绘制的每个动画都需要旋转,所以如果我可以将其设置为可选参数,那将非常棒。此刻,我会解决只是画一个旋转的框架。旋转和绘制动画的单帧
对不起,如果这个问题很难看,我对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)(具体用于名称的情况) ,方法和属性名称并一致使用它们。 –