1

このコードを使用して、画像を描画しようとしています:

g.drawImage(Tile.background, (int)spritePositionX, (int)spritePositionY, null);

Tile.background の私のタイル クラスは次のとおりです。

public class Tile {
public static int size = 40;
public static BufferedImage terrain, background, items, characters;
public Tile(){
    try{
        Tile.background = ImageIO.read(new File("res/bg.png"));
        Tile.terrain = ImageIO.read(new File("res/terrain.png"));
        Tile.items = ImageIO.read(new File("res/items.png"));
        Tile.characters = ImageIO.read(new File("characters/bg.png"));
    }catch(Exception e){
        System.out.println("Error loading images.");
    }
}

}

それは私にこのエラーを与えます:タイプGraphicsのメソッドdrawImage(Image、float、float、Color)は、引数(BufferedImage、int、int、null)には適用できません

これらは、g.drawImage があるクラスの私のインポートです。

import javax.swing.ImageIcon;
import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
import java.awt.Rectangle;
4

2 に答える 2

1

次の方法を使用しようとしていると思われます。

boolean Graphics.drawImage(Image img, int x, int y, ImageObserver observer)

最後の引数は、ImageObserver インターフェイスを実装するオブジェクトでなければなりませんが、"null" はそうではありません。

これを修正する簡単な方法の 1 つは、Tile クラスを変更して ImageObserver を実装することです (次のシグネチャを持つメソッドを追加することにより)。

boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height)

メソッドは単純に true を返すことができます。

次に、null 引数を「this」に変更して drawImage 呼び出しを変更します (呼び出しが Tile クラスにあると仮定します)。Tile クラスにない場合は、null 引数を Tile オブジェクトに変更します。

于 2013-06-10T21:13:35.573 に答える