我试图制作一个类似塞尔达的""用Libgdx在Java中进行游戏。因为我的播放器会有很多其他的东西,我试图使用Threads(例如:对于敌人)。 但是,我有一个例外,我找不到解决方案:
线程中的异常"侵权1"线程中的例外情况"侵权2" > com.badlogic.gdx.utils.GdxRuntimeException:#iterator()不能嵌套使用。 at com.badlogic.gdx.utils.Array $ ArrayIterator.hasNext(Array.java:523) 在com.defel.game.entite.ennemi.Ennemi.deplacementAleatoire(Ennemi.java:368) 在com.defel.game.entite.ennemi.Ennemi.run(Ennemi.java:234)
有关的代码是:
private synchronized void deplacementAleatoire(){
animationCourante = animationMarche[direction];
boolean bloquer = false;
for (MapObject obj : InfosSingleton.getInstance().getCollisionObjects()) {
RectangleMapObject rectMapObject = (RectangleMapObject) obj;
Rectangle rectObject = rectMapObject.getRectangle();
if(Intersector.overlaps(rectObject, rectangleColl)){
bloquer = true;
}
}
if(bloquer){
switch (direction) {
case 0:
direction = 2;
break;
case 1:
direction = 3;
break;
case 2:
direction = 0;
break;
case 3:
direction = 1;
break;
default:
break;
}
}
switch (direction) {
case 0:
rectangle.setY(rectangle.getY() + 2);
rectangleColl.setY(rectangleColl.getY() + 2);
break;
case 1:
rectangle.setX(rectangle.getX() - 2);
rectangleColl.setX(rectangleColl.getX() - 2);
break;
case 2:
rectangle.setY(rectangle.getY() - 2);
rectangleColl.setY(rectangleColl.getY() - 2);
break;
case 3:
rectangle.setX(rectangle.getX() + 2);
rectangleColl.setX(rectangleColl.getX() + 2);
break;
default:
break;
}
}
我认为我的帖子无法同时访问列表,但我不知道如何解决它...
你知道吗?谢谢= D