我正在学习用java编写代码,最近开始根据我的作业编写游戏。 我已经完成了几乎整个游戏,但仍然坚持游戏的动画部分。 这是我到目前为止所做的,
这是加载图像ti显示的类,
public class dpmImage {
private BufferedImage dpm1;
private BufferedImage setDpm1;
public dpmImage() { //this is a constructor
try {
dpm1= ImageIO.read(new File("dpm1Load.png"));
} catch (IOException e) {
e.printStackTrace();
}
setDpm1 = dpm1;
}
private BufferedImage dpm1ImageGet() {
return setDpm1;
}
}
以下代码来自主类(Main.java)
private Graphics cGraphcs;
cGraphcs.drawImage(dpmImageInstance.dpm1ImageGet(), 0, 0, null);
代码工作正常并显示图像。
现在,我可以修改dpmImage
类中的任何内容,但不允许修改Main.java
中的任何内容,并且仍然可以使此图像具有动画效果。所以我在BufferedImage
类中创建了一个dpmImage
数组,并按如下方式在数组中添加第二个图像,
public class dpmImage {
private BufferedImage [] dpm1 = new BufferedImage[2];
private BufferedImage setDpm1;
public dpmImage() { //this is a constructor
try {
dpm1[0]= ImageIO.read(new File("dpm1Load.png"));
dpm1[1]= ImageIO.read(new File("dpm1Load1.png"));
} catch (IOException e) {
e.printStackTrace();
}
setDpm1 = dpm1[0];
setDpm1 = dpm1[1];
}
private BufferedImage dpm1ImageGet() {
return setDpm1;
}
}
但我无法将其从第一张图像设置为第二张。有人可以给我任何暗示吗?我不允许更改Main.java
班级
答案 0 :(得分:0)
您始终从BufferedImage
方法返回相同的dpm1ImageGet
。您需要从数组中获取实例。根据更新的频率,您可以简单地使用像
private int indexImage = 0;
private BufferedImage dpm1ImageGet() {
indexImage = ( indexImage + 1 ) % dpm1.length; //increment and use % to prevent any ArrayOutOfBoundsException
return dpm1[indexImage];
}
每次通话都会返回下一张图片。当然,这取决于你想要获得其他图像的时间。它可以是任何东西。