我正在使用此代码尝试绘制图像:
g.drawImage(Tile.background, (int)spritePositionX, (int)spritePositionY, null);
这是Tile.background的我的tile类:
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;
答案 0 :(得分:3)
您正在尝试使用Graphics对象的Slicks实现,该对象没有您提供的参数的方法。无论如何,光滑已经死了。切换到LIBGDX或只使用Java的2d API。
答案 1 :(得分: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对象。