0

アプレットでJavaゲームを作成しようとすると問題が発生しました。
1つ以上の画像を読み込めません。そうしないと、画像が読み込まれません。
jarファイルの画像を取得しています。

コードローダー:

    public BufferedImage LoadTex(String ura) {
        BufferedImage res = null;
        try {
        URL url = this.getClass().getClassLoader().getResource("tex/" + ura);
        res = ImageIO.read(url);
        } catch (IOException e) {
        }
        return res;
    }

コードアプレット:

tex texu = new tex();
BufferedImage plr;
BufferedImage hud_right;
BufferedImage hud_bottom;

@Override
public void init() {
    plr = texu.LoadTex("tspr.png");

    hud_right = texu.LoadTex("hud_right.png");
    hud_bottom = texu.LoadTex("hud_bottom.png");
}

@Override
public void paint(Graphics screen) {
    Graphics2D G2D = (Graphics2D) screen;
    G2D.drawImage(hud_right, 570, 0, null);
    G2D.drawImage(hud_bottom, 0, 410, null);
}

1つの画像で完璧に機能しますが、もっと試してみると停止します。そして、クライアントはロードすらしません。

エラーが発生しています:input == null

これを修正する方法。

ありがとうございました

4

1 に答える 1

2

あなたは決して例外を消費するべきではありません、少なくともあなたはそれらを記録するべきです、それはあなたに髪を引っ張る時間を節約します...

public BufferedImage LoadTex(String ura) throws IOException {
    BufferedImage res = null;
    URL url = this.getClass().getClassLoader().getResource("tex/" + ura);
    res = ImageIO.read(url);
    return res;
}

あなたは呼び出さなければなりませんsuper.paint(g)、paintメソッドはバックグラウンドで多くの仕事をします、そしてあなたはそれを決して無視するべきではありません。

public void paint(Graphics screen) {
    super.paint(screen);
    Graphics2D G2D = (Graphics2D) screen;
    G2D.drawImage(hud_right, 570, 0, null);
    G2D.drawImage(hud_bottom, 0, 410, null);
}

各画像を個別に読み込んで、各画像を読み込めるようにしてください。これが機能し、それでも1つの画像を読み込めない場合は、メモリに問題がある可能性があります。

于 2012-10-16T01:35:18.260 に答える