我正在开发2D游戏,我正在使用LWJGL和Slick-Util库来提供帮助。没有什么太复杂的,我之前编写了更难的东西。但是,我遇到了HashMap/Map返回值的一个非常奇怪的问题。这是我关于HashMap的代码:Java HashMap只返回列表的最后一个元素
public Map textures;
public void loadTextures()
{
textures = new HashMap();
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;
}
2013-05-06
Knokk
+0
main.loadTextureFrom()做了什么?你可以发布代码? –
2013-05-06 09:21:09
+0
http://stackoverflow.com/questions/1516549/bad-idea-to-use-string-key-in-hashmap –
2013-05-06 09:21:23
+0
难道是loadTextureFrom是罪魁祸首? –
2013-05-06 09:21:24