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



我正在尝试制作我的第一个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);
    }
}
}

加载的路径似乎在应用程序Jar文件中。很可能您正在保存图像,但没有更新Jar,因此更改不会传播。这也可以解释为什么没有找到floorp.png。在更改映像目录时重新生成应用程序。

相关内容

  • 没有找到相关文章

最新更新