1

コードを実行して pacman レベルの背景を表示しているときに、画像と pacman スプライトがロードされないという問題に遭遇しました。

例外:

Exception in thread "Thread-2" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1388)
    at org.pacman.Pacman.init(Pacman.java:51)
    at org.game.engine.GameLoop.run(GameLoop.java:26)

GameLoop の 26 行目は単純game.init();です。

そして、ここにクラスがあります:

public class Pacman extends Game {

    public static void main(String[] args) {
        GameApplication.start(new Pacman());
    }

    private BufferedImage sheet;
    private int frame;

    public Pacman() {
        title = "Pacman";
        width = 176;
        height = 258;
        frame = 0;
    }

    @Override
    public void draw(Graphics g) {
        if (sheet != null) {
            g.drawImage(sheet, -2, 0, null);
            //draw ms pacman
            g.drawImage(sheet.getSubimage(628+(frame/3)*(15+2), 33, 15, 15), 80, 105, null);
        }
    }

    @Override
    public void init() {
        try {
            sheet = ImageIO.read(Pacman.class.getResource("/images/pacman.png"));
        } catch (IOException ex) {
            Logger.getLogger(Pacman.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void update() {
        frame++;
        if (frame > 3*2) {
            frame = 0;
        }
    }
}
4

2 に答える 2

3

org.pacman.Pacman.init(Pacman.java:51) で

では、51 行目を見てください。

sheet = ImageIO.read(Pacman.class.getResource("/images/pacman.png"));

Pacman.class.getResource("/images/pacman.png")もそうnullなので、画像を読み込んでいないようです。

于 2012-10-22T21:06:40.307 に答える
2

で呼び出しImageIO.readてみますが、事前getResourceAsStreamに確認してください。あなたはそれが確かにあることがわかります。つまり、その URI では画像を取得できません。InputStreamnullnull

于 2012-10-22T21:06:10.563 に答える