【发布时间】:2013-04-30 00:31:16
【问题描述】:
我正在开发一款 2D 游戏,我正在使用 LWJGL 和 Slick-Util 库来提供帮助。它没有什么太复杂的东西,而且我以前编写过更困难的东西。但是,我遇到了 HashMap / Map 返回值的一个非常奇怪的问题。这是我关于 HashMap 的代码:
public Map<String, Texture> textures;
public void loadTextures()
{
textures = new HashMap<String, Texture>();
textures.put("char_up", main.loadTextureFrom("character/character_up.png"));
textures.put("char_down", main.loadTextureFrom("character/character_down.png"));
textures.put("char_right", main.loadTextureFrom("character/character_right.png"));
textures.put("char_left", main.loadTextureFrom("character/character_left.png"));
}
但是,每当我使用 textures.get(frameHere) 时,它总是返回我为 HashMap 放置的最后一项,所以如果我的最后一项是“char_right”,它总是返回 char_right 纹理,即使我调用了一些东西像 textures.get("char_up")。每次角色改变方向时,我都尝试通过加载纹理的另一个实例来设置角色位置,并且效果很好。意思是,问题不在于纹理加载器,也不是我将纹理作为值放入 HashMap 的方式。
这非常令人沮丧,我不知道我在这里可能会搞砸什么。也许我遗漏了一些非常简单的东西,因为我以前在 Java 中做过这件事没有问题,但即使经过比较,一切看起来都 100% 没问题。任何帮助是极大的赞赏。谢谢。
编辑:
这是我的 loadTextureFrom() 方法:
public Texture loadTextureFrom(String path)
{
try
{
return TextureLoader.getTexture("PNG", new FileInputStream(new File("res/textures/" + path)));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
【问题讨论】:
-
main.loadTextureFrom() 是做什么的?可以贴一下代码吗??
-
难道是loadTextureFrom是罪魁祸首?
-
刚刚发布了 loadTextureFrom() 方法。这应该不是问题,我让它在不使用 HashMap 时返回不同的纹理,但由于它被要求我编辑了帖子。谢谢