我正在制作一款游戏而且我一直试图让图像进入屏幕。我说 -
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
我确信我的图像路径是正确的路径,但它一直声明它不是。
background = new Background("C:/hello/flappybird.png");
我工作区的“调试”部分指出
存在问题background.render(g);
具体来说,
g.drawImage(img,(int)x,(int)y,null);
我不知道为什么会这样做。我100%确定我的构建路径是正确的!
编辑:只是想知道后台类的构造函数:
public Background(String s) {
try {
img = ImageIO.read(this.getClass().getResource(s));
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
此错误表示未找到图像文件。为了确保情况确实如此,我建议您直接执行ImageIO.read()
并检查结果:
BufferedImage icon = ImageIO.read("C:/hello/flappybird.png");
此外,在类路径之外使用资源并不是一个好习惯。我强烈建议您更改类Background
以使用类路径资源。在Background
课程的某个地方,您可以添加:
public class Background {
public Background(String filename) {
// Some code here
BufferedImage image = ImageIO.read(getClass().getResource("/resources/images/" + filename));
// More code here
}
}
答案 1 :(得分:0)
我找到了解决方案!
似乎在gamePanel中,在我宣布我的BufferedImage之后,我忘了添加 -
Graphics g = image.getGraphics();