Intereting Posts
Пользовательский элемент строки для Android для ListView Как установить размер растрового изображения в ZXing? Не удалось разрешить целевые «Google Inc.: API Google: 16» Требуется токен QuickBlox Поцарапайте экран, чтобы отобразить изображение в android Android: программно установить выравнивание в RemoteView Как использовать Xposed framework на эмуляторе Android Метод runOnUiThread () в фрагменте Преобразование или преобразование простого объекта в объект другого класса Добавление входа в приложение в меню настроек Android Загрузите базу данных SQLite из Интернета и загрузите ее в приложение Android Определение того, является ли цель эмулятором или телефоном во время выполнения Удалите старые версии Android SDK Принудительная сеть Wi-Fi для сторонних приложений Ошибка идентификации идентификатора найдена для атрибута даже после использования пространства имен http://schemas.android.com/apk/res-auto

Libgdx: установка другого экрана, но все же кнопки с старого экрана активны

В моей game libgdx у меня есть 2 экрана, menu и list . Когда я нажимаю на label на экране menu , я делаю setscreen(list) . Появится новый экран, и экран меню вместе с его ярлыками исчезнет.

Но когда я нажимаю на те же позиции (из экрана меню, где были метки, но, конечно, эти ярлыки не отображаются, поскольку я менял экраны), событие click реагирует. Зачем?

Note: На моем экране списка в настоящее время нет обработчиков событий для любого виджета.

При переключении экранов мне нужно сделать что-то большее, чем просто setscreen(anotherscreen) чтобы отключить старый экран?

Я изменил это:

Я переместил входной процессор в метод show () этого экрана, используя переменную сцены этого экрана

 public void show() { ... Gdx.input.setInputProcessor(stage); } 

До того, как я установил это только в конструкторе экрана, так что даже если бы я менял экран, входной процессор все еще был привязан к последней стадии созданного экрана

Ответ выше adiddnt работает для меня, потому что я не работаю с InputProcessor на втором экране.

Мое решение состояло в том, чтобы установить InputProcessor на null после setScreen.

Gdx.app.getApplicationListener().setScreen(new Screen()); Gdx.input.setInputProcessor(null);

Просто сломал мне голову над этим. Я изменил экраны в методе show но после этого Gdx.input.setInputProcessor(stage) . Метод по-прежнему завершен после того, как запущен show метод нового экрана и, таким образом, вернется к предыдущему этапу.

Поэтому убедитесь, что вы вызываете Gdx.input.setInputProcessor(stage) прежде чем менять экраны или return после изменения экранов.