即时创建FlappyBird Mock,它的四个播放器,因此每个播放器都有不同的图像,我已设法为第一个设置图像,但我似乎无法为其他人设置它们。
我有一个鸟类,我设置了第一张图像,我有一个主要的类,我创建了其他3只鸟,不知道我在哪里改变图像以及我应该如何。帮助将不胜感激。
public Bird(int x, int y) {
this.x = x;
this.y = y;
this.color = Color.red;
this.radius = 30;
this.gravity = 6;
this.isAlive = true;
this.score = 0;
try {
this.read = ImageIO.read(new File("src/Images/41.png"));
} catch (IOException ex) {
Logger.getLogger(PaintingPanel.class.getName()).log(Level.SEVERE, null, ex);
}
}
public class FlappyBird extends TimerTask implements KeyListener{
private Bird flappyA;
private Bird flappyB;
private Bird flappyC;
private Bird flappyD;
答案 0 :(得分:0)
考虑到代码的路径在该代码中始终是相同的。
我不确定你的问题究竟是什么,但如果你想要的是为每个flappy设置不同的图像,你应该试试这个:
public Bird(int x, int y, String imageName)
{
this.x=x;
this.y=y;
this.color = Color.red;
this.radius = 30;
this.gravity = 6;
this.isAlive = true;
this.score = 0;
try {
this.read = ImageIO.read(new File("src/Images/" + imageName + ".png"));
} catch (IOException ex) {
Logger.getLogger(PaintingPanel.class.getName()).log(Level.SEVERE, null, ex);
}
}
然后在你的主要课堂上,你会发现瑕疵:
flappyA = new Bird(0, 0, "image0");
flappyB = new Bird(0, 0, "image1");
flappyC = new Bird(0, 0, "image2");
编辑:您的Images文件夹应位于项目的根目录下,“src”应仅用于代码源文件。
答案 1 :(得分:0)
构建应用程序后,src
目录将不再存在,您将无法像在文件系统中存在的那样访问应用程序中嵌入的资源,例如
this.read = ImageIO.read(new File("src/Images/41.png"));
将抛出FileNotFoundException
。
要加载嵌入资源,您需要使用Class#getResource
或Class#getResourceAsStream
,例如......
this.read = ImageIO.read(getClass().getResource("/Images/41.png")));
不是以这种方式对文件名进行硬编码,而是应该依赖变量来使过程更加灵活......
String imageToBeLoaded = ...;
//...
this.read = ImageIO.read(getClass().getResource(imageToBeLoaded)));