Olá pessoal do GUJ
Estou com um pequeno problema… estou criando um framework para jogos em Java aqui para a minha monografia (ou pelo menos tentando), e minha classe Game possui uma lista com todos os objetos do jogo.
Tem nela também um método para atualizar os objetos conforme o tempo passa no jogo… até aí tudo certo.
Esses dias fui tentar adicionar um novo objeto na lista durante este método update, mas deu erro porque tentei modificar a lista durante a utilização de um Iterator… a solução que encontrei foi criar duas listas temporárias, uma para adicionar e outra para remover objetos da lista principal, e o código ficou assim:
/**
* Método que atualiza os <code>GameObject</code>s do jogo
* @return Se atualizou o jogo true, false se não foi preciso atualizar.
*/
public boolean updateGame() {
long newTime;
float deltaT;
Iterator iterator;
GameObject actor;
if (oldTime == -1) {
oldTime = clock.getCurrentTime();
return true;
}
newTime = clock.getCurrentTime();
if (oldTime != newTime) {
/* adiciona e remove os objetos que se encontram nas listas de espera */
objectsList.addAll(addList);
addList.clear();
objectsList.removeAll(removeList);
removeList.clear();
deltaT = (float) (newTime - oldTime) / 1000;
iterator = objectsList.iterator();
while (iterator.hasNext()) {
actor = (GameObject) iterator.next();
actor.update(deltaT);
}
oldTime = newTime;
return true;
}
else {
return false;
}
}
Gostaria de saber de vocês se existem outros métodos, se possível mais eficientes, para se fazer isso.
Falou e obrigado 
