Bonjour à tous,
j'essaie de programmer un petit "zelda-like" en Java avec Libgdx, et comme il y aura pas mal d'autres éléments que mon personnage sur la map; je commence à utiliser les Threads pour les gérer. Cependant, mon programme plante sur une exception que je n'arrive pas à gérer et d'après ce que j'ai pû en trouver sur internet, c'est un problème d'accès concurrent (mais rien de sûr).
L'exception est la suivante :
Exception in thread "Tort 1" Exception in thread "Tort 2" com.badlogic.gdx.utils.GdxRuntimeException: #iterator() cannot be used nested.
at com.badlogic.gdx.utils.Array$ArrayIterator.hasNext(Array.java:523)
at com.defel.game.entite.ennemi.Ennemi.deplacementAleatoire(Ennemi.java:368)
at com.defel.game.entite.ennemi.Ennemi.run(Ennemi.java:234)
Le code concerné semble être le suivant (d'ailleurs, quand je le supprime, je n'ai plus l'erreur mais j'en ai besoin lol) :
Ce code sert à parcourir une List de MapObject qui est contenue dans un Singleton. Je pense que le problème vient du parcours de cette liste. Pour info, la méthode est déclarée "private synchronized".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for (MapObject obj : InfosSingleton.getInstance().getCollisionObjects()) { RectangleMapObject rectMapObject = (RectangleMapObject) obj; Rectangle rectObject = rectMapObject.getRectangle(); if(Intersector.overlaps(rectObject, rectangleColl)){ bloquer = true; } }
Ca commence à faire un moment que je suis sur cette question =D j'espère qu'un expert charitable passera par là pour me donner son avis.
Merci d'avance![]()
Partager