Добре, току-що получих странен бъг и не знам дали е свързан с версията на 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}
Накратко: Веднага щом щракна с левия бутон на мишката, за да снимам, програмата замръзва и получавам този регистър на грешките в конзолата: Errorlog на Pastebin
Опитах се да отстраня грешки, което изглежда като това средно отстраняване на грешки. Забележете странното повторение на това -> запис -> това -> запис -> това .... (изглеждаше безкрайно) Екранна снимка за отстраняване на грешки
Просто нямам достатъчно опит, за да разбера какъв е проблемът, затова отидох тук, за да помоля за помощ. Благодаря предварително SO!
за разбирането
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