Игра libGDX соответствует superDev на локальном хостинге: 8080 показывает только одну кнопку

#java #html #libgdx

#java #HTML #libgdx

Вопрос:

Я не могу получить свою игру libGDX в браузере с помощью gradlew html:superDev

После выполнения команды gradlew html:superDev на терминале внутри моей IDE (Inteliji) я получаю ответ: сервер кода готов наhttp://127.0.0.1:9876 /

Я перехожу на этот сайт, копирую закладки, и когда я пытаюсь играть в свою игру с помощью веб-сайта http://localhost:8080/index.html , появляется только серая кнопка перезагрузки!

Когда я нажимаю кнопку, я получаю опцию компиляции, которая ничего не делает.

После компиляции в терминале, прокручивая вверх, я вижу много X can't be instantiated. Constructors not generated и

 not emitting code for accessing field mask in class 'com.badlogic.x.x.x' as its of type long which 
can't be used with JSNI
 
  

(и многое другое)
Я действительно не уверен, связаны ли они вообще с проблемой.

Я искал этот вопрос на других сайтах, но ответы были либо не совсем такими, в чем заключалась моя проблема, либо слишком расплывчатыми / не приводил пример.

В чем проблема? Кроме того, есть ли способ просмотреть журнал, чтобы увидеть, что пошло не так?

Редактировать:

Я заглянул в консоль игры и вижу следующую ошибку:

 Uncaught TypeError: $wnd.SoundManager is not a constructor
    at kB_g$ (SoundManager.java:75)
    at VZl_g$.ol_g$ [as onModuleLoad_0_g$] (GwtApplication.java:144)
    at Array.YNi_g$ (max_00046worldofsquares_00046GdxDefinitionSuperdev__EntryMethodHolder.java:3)
    at initializeModules_0_g$ (ModuleUtils.java:44)
    at iZg_g$ (Impl.java:309)
    at lZg_g$ (Impl.java:368)
    at Impl.java:78
    at qNi_g$ (ModuleUtils.java:55)
    at TileType.java:3
  

Когда я нажимаю на «SoundManager.java.75», это дает мне эту конфигурацию:

 public static native void init (String moduleBaseURL, int flashVersion, boolean preferFlash, SoundManagerCallback callback) /*-{
        $wnd.soundManager = new $wnd.SoundManager(); **< ERROR IS HERE**
        $wnd.soundManager.audioFormats.mp3.required = false;
        $wnd.soundManager.setup({
            url: moduleBaseURL,
            flashVersion: flashVersion,
            preferFlash: preferFlash,
            onready: function() { 
                callback.@com.badlogic.gdx.backends.gwt.soundmanager2.SoundManager.SoundManagerCallback::onready()();
            },
            ontimeout: function(status) {
                callback.@com.badlogic.gdx.backends.gwt.soundmanager2.SoundManager.SoundManagerCallback::ontimeout(Ljava/lang/String;Ljava/lang/String;)(status.success, (typeof status.error === 'undefined') ? '' : status.error.type);
            }
                    
        });
        $wnd.soundManager.beginDelayedInit();
    }-*/;

}
  

Что странно, потому что в моей игре даже нет звуков.

Комментарии:

1. Ваша игра должна отображаться под серой кнопкой перезагрузки. Если этого не произойдет, у вас будут некоторые ошибки в вашей консоли javascript. (F12 в Chrome, консоль)

2. @MrStahlfelge Я заглянул в консоль и обнаружил ошибку, касающуюся «SoundManager», я также отредактировал вопрос, показывающий ошибку.

Ответ №1:

Проблема связана с тем, что последнее приложение установки генерирует файлы шаблонов для версии snapshot для libGDX 1.9.12, но вы используете более старый libGDX.

Два способа решить эту проблему:

  • Используйте libGDX 1.9.12-СНИМОК

или

Бонусное быстрое исправление: отключить звук в конфигурации HTML.

Комментарии:

1. Где бы мне загрузить новый снимок? Будет ли нажатие на «загрузить» при загрузке libgdx выдавать мне снимок? Кроме того, где я могу найти файл конфигурации (как он называется?) и как бы мне «отключить звук»?

2. Я исправил свою проблему, отключив звук в конфигурации. config.disableAudio = true;

3. Вы можете найти определение 1.9.11 в файле build.gradle, вы можете изменить его на 1.9.12-SNAPSHOT, если вам нужен звук.

Ответ №2:

В версии 1.9.11 вы можете временно обойти, отключив звук.

В файле HtmlLauncher.java в модуле html редактировать, чтобы:

 public class HtmlLauncher extends GwtApplication {
    //some stuff
    @Override
    public GwtApplicationConfiguration getConfig () {
        GwtApplicationConfiguration configuration;
        configuration = new GwtApplicationConfiguration(480, 320);
        configuration.disableAudio = true;
        return configuration;
    }
    //some stuff
}