Java 设置不同的字符图像
我正在创建一个FlappyBird模拟,它有四个玩家,因此每个玩家都有不同的图像,我已经设法为第一个设置了图像,但我似乎无法为其他人设置图像 我有一个关于鸟的类,在那里我设置了第一个图像,我有一个主类,在那里我创建了另外3个鸟,不确定我在哪里修改图像以及我应该如何修改。我们将不胜感激Java 设置不同的字符图像,java,image,Java,Image,我正在创建一个FlappyBird模拟,它有四个玩家,因此每个玩家都有不同的图像,我已经设法为第一个设置了图像,但我似乎无法为其他人设置图像 我有一个关于鸟的类,在那里我设置了第一个图像,我有一个主类,在那里我创建了另外3个鸟,不确定我在哪里修改图像以及我应该如何修改。我们将不胜感激 public Bird(int x, int y) { this.x = x; this.y = y; this.color = Color.red;
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;
考虑到你的图像路径在代码中总是一样的 我不确定你的问题到底是什么,但如果你只是想让每个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);
}
}
然后在你的主课上,你会举例说明flappy:
flappyA = new Bird(0, 0, "image0");
flappyB = new Bird(0, 0, "image1");
flappyC = new Bird(0, 0, "image2");
编辑:你的图像文件夹应该在项目的根目录下,“src”应该只用于源代码文件 构建应用程序后,
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)));
如何更改其他字符的图像,因为它们都有相同的图像OP构建应用程序时,此代码将不再工作。生成程序时,
src
文件夹将不存在。应用程序上下文中包含的资源(例如应用程序Jar中包含的资源)需要以不同的方式加载