更改了图片,但它没有出现在我的java游戏中

时间:2013-11-21 14:31:38

标签: java graphics textures

我正在尝试制作我的第一个java游戏。我目前正在乱搞添加纹理,但我遇到了一个问题。

我可以将图像加载到游戏中,但是如果我在photoshop中对图像进行了更改,然后重新运行游戏,图像就不会发生变化。

如果我复制了图像,然后将路径更改为指向该图像,则游戏会抛出错误。

public static Render floor = loadBitmap("/textures/floor.png");

这段代码指向图像存储的位置,游戏将运行,但如果我在photoshop中编辑图像,游戏中没有任何变化。

public static Render floor = loadBitmap("/textures/floorp.png");

如果我将路径更改为同一文件夹中的另一个图像,则会出现此错误。

Exception in thread "Thread-2" java.lang.ExceptionInInitializerError
at com.mime.minefront.graphics.Render3D.floor(Render3D.java:42)
at com.mime.minefront.graphics.Screen.render(Screen.java:27)
at com.mime.minefront.Display.render(Display.java:144)
at com.mime.minefront.Display.run(Display.java:112)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: input == null!
at com.mime.minefront.graphics.Texture.loadBitmap(Texture.java:20)
at com.mime.minefront.graphics.Texture.<clinit>(Texture.java:8)
... 5 more
Caused by: java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1388)
at com.mime.minefront.graphics.Texture.loadBitmap(Texture.java:12)
... 6 more
BUILD SUCCESSFUL (total time: 1 second)

这是我在纹理类中使用的代码。

package com.mime.minefront.graphics;

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class Texture {

public static Render floor = loadBitmap("/textures/floorp.png");

public static Render loadBitmap(String fileName) {
    try {
        BufferedImage image = ImageIO.read(Texture.class.getResource(fileName));
        int width = image.getWidth();
        int height = image.getHeight();
        Render result = new Render(width, height);
        image.getRGB(0, 0, width, height, result.pixels, 0, width);
        return result;
    } catch (Exception e) {
        System.out.println("CRASH!");
        throw new RuntimeException(e);

    }
}

}

1 个答案:

答案 0 :(得分:0)

看起来您正在加载的路径位于应用程序Jar文件中。您可能正在保存图像但未更新Jar,因此更改不会传播。这也可以解释为什么没有找到floorp.png。在对映像目录进行更改时重建应用程序。

相关问题