设置不同的角色图像

时间:2014-05-30 00:05:48

标签: java image

即时创建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;

2 个答案:

答案 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#getResourceClass#getResourceAsStream,例如......

this.read = ImageIO.read(getClass().getResource("/Images/41.png")));

不是以这种方式对文件名进行硬编码,而是应该依赖变量来使过程更加灵活......

String imageToBeLoaded = ...;
//...
this.read = ImageIO.read(getClass().getResource(imageToBeLoaded)));