Java 设置不同的字符图像

Java 设置不同的字符图像,java,image,Java,Image,我正在创建一个FlappyBird模拟,它有四个玩家,因此每个玩家都有不同的图像,我已经设法为第一个设置了图像,但我似乎无法为其他人设置图像 我有一个关于鸟的类,在那里我设置了第一个图像,我有一个主类,在那里我创建了另外3个鸟,不确定我在哪里修改图像以及我应该如何修改。我们将不胜感激 public Bird(int x, int y) { this.x = x; this.y = y; this.color = Color.red;

我正在创建一个FlappyBird模拟,它有四个玩家,因此每个玩家都有不同的图像,我已经设法为第一个设置了图像,但我似乎无法为其他人设置图像

我有一个关于鸟的类,在那里我设置了第一个图像,我有一个主类,在那里我创建了另外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;

考虑到你的图像路径在代码中总是一样的

我不确定你的问题到底是什么,但如果你只是想让每个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中包含的资源)需要以不同的方式加载