ここにこのコードがあります (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);
誰でも共有できる洞察がありますか?