我在这里有这段代码(使用 lwjgl,但这应该没有实际意义)尝试在按下 esc 键时暂停游戏。我使用带有键的 ArrayList 来跟踪按下的内容和未按下的内容。
public List<Integer> keys = new ArrayList<Integer>();
public void get() {
if (isKeyDown(KEY_ESCAPE) && !keys.contains(KEY_ESCAPE)) {
keys.add(KEY_ESCAPE);
keyEscape();
}
}
public void rem() {
if (!isKeyDown(KEY_ESCAPE) && keys.contains(KEY_ESCAPE))
keys.remove(KEY_ESCAPE);
}
private void keyEscape() {
Screen.paused ^= true;
}
这是由循环调用的,循环中get()
一个rem()
接一个地按顺序执行。当我放开 ESC 时,这给了我一个很棒java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
的体验。keys.remove(KEY_ESCAPE);
有人有什么见解可以分享吗?