我正在開發2D遊戲,我正在使用LWJGL和Slick-Util庫來提供幫助。沒有什麼太複雜的,我之前編寫了更難的東西。但是,我遇到了HashMap/Map返回值的一個非常奇怪的問題。這是我關於HashMap的代碼:Java 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()做了什麼?你可以發佈代碼? – prasanth 2013-05-06 09:21:09
http://stackoverflow.com/questions/1516549/bad-idea-to-use-string-key-in-hashmap – rebeliagamer 2013-05-06 09:21:23
難道是loadTextureFrom是罪魁禍首? – Ewald 2013-05-06 09:21:24