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

3

您正在尝试使用 Graphics 对象的 Slicks 实现,该对象没有您提供的参数的方法。无论如何,Slick 已经死了。要么切换到 LIBGDX,要么只使用 Java 的 2d API。

于 2013-06-10T21:23:56.570 回答
1

我怀疑您正在尝试使用以下方法:

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

最后一个参数必须是实现 ImageObserver 接口的对象,而“null”则不是。

解决此问题的一种简单方法是修改 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 回答