Situation: Ich habe ein kleines 2D Spiel, das mit einer ArrayList aus den Objekten des Spieles arbeitet, diese werde alle ~16ms durchlaufen und eben bearbeitet. Nun hab ich auf dem JPanel des Spieles Mouse- und Key-Listener. Diese sollen nun die Eingaben verarbeiten. Dies ist an sich kein Problem, aber wenn ich nun bei der Verabeitung einer Eingabe etwas an der ArrayList ändere, dann krieg ich früher oder später eine ConcurrentModificationException von den For each schleifen, die die Objekte durchlaufen. Wieso das passiert ist klar, die Anzahl der Objekte in der ArrayList ändern sich, was der Iterator nicht so toll findet. Wie umgehe ich das am besten ?
Ich muss dazu wohl die Eingabe dann abarbeiten, wenn er sich nicht in den schleifen befindet. Nur wie koordiniere ich das ? Eine Idee wäre, bei einer Eingabe nichts direkt zu machen, nur die Eingabe irgendwie abzuspeichern und dann in einem Schritt der Spielschleife auszuführen. Aber wie kann ich alle Befehle auch wirklich abspeichern ?
Oder kann man das irgendwie anders lösen ?
Ich muss dazu wohl die Eingabe dann abarbeiten, wenn er sich nicht in den schleifen befindet. Nur wie koordiniere ich das ? Eine Idee wäre, bei einer Eingabe nichts direkt zu machen, nur die Eingabe irgendwie abzuspeichern und dann in einem Schritt der Spielschleife auszuführen. Aber wie kann ich alle Befehle auch wirklich abspeichern ?
Oder kann man das irgendwie anders lösen ?