我目前正在尝试将图像打印到屏幕上以准备创建游戏。我可以自己显示图像,但前提是图像在paintComponents()类中实例化。我,当然,不想每一帧都重新实例化整个板,但似乎无法让它工作。我将如何做到这一点?
我试图在类范围内声明一个图像并在类的构造函数中实例化它。但是,一旦我尝试打电话drawImage(),图像就拒绝显示。一旦我将它实例化,这个问题就消失了printComponents()。我曾尝试(轻微地)使用 JLabel 和 JIcon,但运气不佳。特别是因为我不能将 drawImage 与 JLabel 一起使用。
这是行不通的:
public class Skeleton extends JPanel
{
BufferedImage img = null;
public Skeleton()
{
try{
img = ImageIO.read(new File(myFile.png));
} catch (IOException e){
System.out.println("Loading failed.");
}
while(true)
{
repaint();
}
}
public paintComponents(Graphics g)
{
g.drawImage(img, 50, 50, null);
}
}
这确实有效:
public class Skeleton extends JPanel
{
public Skeleton()
{
while(true)
{
repaint();
}
}
public paintComponents(Graphics g)
{
BufferedImage img = null;
try{
img = ImageIO.read(new File(myFile.png));
} catch (IOException e){
System.out.println("Loading failed.");
}
g.drawImage(img, 50, 50, null);
}
}
我想最终创建一个包含预加载图像的 Tile 对象的双数组,就像myFile.png我可以调用打印的那样g.drawImage(tiles[1][1].getTexture(), 50, 50, null);
加载我的文件是有效的,因为我从不抛出异常并且代码在paintComponents. 我错过了什么?
绝地无双
相关分类