Я создал игру libgdx, которая отлично работает в режиме рабочего стола, затем я попытался запустить ее на платформе Android. Игра без проблем переходит в экран меню, но когда я нажимаю кнопку воспроизведения, игра закрывается: «К сожалению, mygame перестала работать».
У меня есть экран кодирования, и когда он загружает ресурсы, он переходит на экран меню:
if (assetManager.update()){
game.setScreen(new MenuScreen(game, assetManager));
}
Затем на моем экране меню у меня есть кнопка воспроизведения, при нажатии которой она переходит на экран игры:
ChangeListener listener = new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
//play button
if (actor.equals(playBtn)) {
menuMusic.stop();
game.setScreen(new GameScreen(game, assetManager, settingsPrefs));
}
}
}
В режиме рабочего стола он работает нормально, но на Android, когда я нажимаю кнопку воспроизведения, я получаю следующие ошибки (не полный журнал):
E/AndroidRuntime: FATAL EXCEPTION: GLThread 4474
java.lang.NoClassDefFoundError: com.myname.mygame.worlds.MyContactListener
E/AndroidGraphics: waiting for pause synchronization took too long; assuming deadlock and killing
В журнале ошибок указано, что проблема в мире box2d и его слушателе контактов, но для меня все в порядке. Я думаю, это ParticleEffect. У меня их довольно много, и я не загрузил их должным образом, я просто использовал Gdx.files.internal(). Как загрузить Libgdx ParticleEffect в AssetManager?
есть ли способ, чтобы приложение не переходило в тупик? чтобы приложение не закрывалось
ОБНОВЛЕНИЕ (я нашел причину ошибки)
Итак, я попытался изменить свой код, потому что я учил, что способ, которым я кодировал игру, не так хорош, и все еще есть та же проблема на платформе Android. Игра запускается правильно и переходит на экран меню, но когда вы нажимаете кнопку воспроизведения, происходит сбой. Я добавил мир Box2d на экран меню.
world = new World(0f, -10f);
Затем я получил ту же ошибку при попытке перейти на экран игры
FATAL EXCEPTION: GLThread 8739
Process: com.myname.mygame, PID: 12794
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/badlogic/gdx/physics/box2d/World;
Как только я добавил box2d world в класс, я просто получаю сообщение об ошибке, проблема в классе World, так как мне узнать, правильно ли установлен пакет, содержащий класс? или есть другие решения?




Как говорится в документе: https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/physics/box2d/World.html,
В мире есть только этот конструктор
World(Vector2 gravity, boolean doSleep)
Итак, как это возможно, что вы создаете объект World таким образом?
Более того, проверьте этот ответ:
http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=22311