Хорошо, я только что получил странную ошибку, и я не знаю, связано ли это с версией Java, с исходным кодом или с моей машиной. (Сегодня я обновляю свою версию Java!)
До проблемы... Я пишу игру с Libgdx, до сих пор ничего особенного, просто стрельба и уничтожение объектов. Чтобы уничтожить объекты, я добавляю их в список CopyOnWriteArrayList, а после завершения работы с WorldLogic и EntityLogic я удаляю эти объекты (во избежание ошибок) — работает отлично.
Чтобы добавить объекты на сцену, в данном случае маркер, я вызываю метод, который добавляет BodyDef и FixtureDef в Hashmap, затем этот Hashmap повторяется, и тело создается из BodyDef и FixtureDef. Код:
public void createBodies() {
for (ConcurrentHashMap.Entry<BodyDef, FixtureDef> entry: bodiesToCreate.entrySet()) {
System.out.println("Key: "+entry.getKey()+", Value: "+ entry.getValue());
myWorld.getWorld().createBody(entry.getKey()).createFixture(entry.getValue());
bodiesToCreate.remove(entry);
}
}
Напечатанные значения, например:
{com.badlogic.gdx.physics.box2d.BodyDef@509dd43b=com.badlogic.gdx.physics.box2d.FixtureDef@5810f29f}
Короче говоря: как только я нажимаю левую кнопку мыши, чтобы выстрелить, программа зависает, и я получаю этот журнал ошибок в консоли: Журнал ошибок на Pastebin
Я попытался отладить, что выглядит как эта промежуточная отладка. Обратите внимание на странное повторение this -> entry -> this -> entry -> this.... (выглядело бесконечно) Снимок экрана отладки< /а>
Я просто не достаточно опытен, чтобы понять, в чем проблема, поэтому я пошел сюда, чтобы попросить о помощи. Заранее спасибо ТАК!
С Уважением
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j com.badlogic.gdx.physics.box2d.Body.jniCreateFixture(...)
. Похоже, это ошибка, похожая на ту, о которой сообщалось на badlogicgames.com/ forum/viewtopic.php?t=15752&p=68074 , но это был только один из первых результатов веб-поиска (я еще не видел код этого метода, но он может дать некоторые идеи) - person Marco13   schedule 13.08.2014