是否可以使用字符串内容作为绘画的图像修饰符?

时间:2013-02-05 22:27:52

标签: java string image graphics paint

我目前正在研究eclipse中的一个小型Java游戏,并且在几千行代码中深陷其中。现在,我特意尝试使用String的内容来绘制图像,我想知道是否可能。如果是这样,每个图像至少会为我节省几百行个别变量。

由于长度的原因,整个程序的粘贴很可能会产生相反的效果,因此我只会证明我的目标是什么。

我正在尝试做什么:

ImageIcon ladder = new ImageIcon (getClass ().getResource ("ladder.png"));
floorContents [currentX] [currentY] = "ladder";

public void paint (Graphics g)
{
     if (floorContents [currentX] [currentY] != "none") // painting item where standing
     {
         floorContents[currentX][currentY].paintIcon (this, g, 0, 0);
     }
}

基本上我试图让程序看到 这一行:

floorContents[currentX][currentY].paintIcon (this, g, 0, 0);

这样:

ladder.paintIcon (this, g, 0, 0);

如果可能的话。这样可以使我不必单独写入每个图像项目。

3 个答案:

答案 0 :(得分:2)

将每张图片放入由字符串

键入的Map
imageMap.put("ladder", new ImageIcon (getClass ().getResource ("ladder.png")));

//...

imageMap.get(floorContents [currentX] [currentY]).paintIcon (this, g, 0, 0);

当然,您应该先键入以查看地图是否包含该键,或者返回的值是否为空...

if (imageMap.containsKey(floorContents [currentX] [currentY]) {
    //....
}

ImageIcon image = imageMap.get(floorContents [currentX] [currentY]);
if (image != null) {
    //...
}

但这取决于你

答案 1 :(得分:1)

 if (floorContents [currentX] [currentY] != "none")

应该更像是:

 if (!floorContents [currentX] [currentY].equals("none"))

有关详细信息,请参阅String comparison in Java(和about 500 more)。

答案 2 :(得分:1)

我会彻底杀死字符串。如果我看过它,“无”是null的代码味道。为什么甚至匹配String

ImageIcon[][] floorContents;
ImageIcon ladder = new ImageIcon (getClass ().getResource ("ladder.png"));
floorContents[currentX][currentY] = ladder;


public void paint (Graphics g) {
   if (floorContents [currentX] [currentY] != null) {
      floorContents[currentX][currentY].paintIcon (this, g, 0, 0);
   }
}