我正在开发一款 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 纹理,即使我调用了类似纹理的东西。得到(“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;
}