Вы должны иметь возможность использовать Stage
для управления вашим пользовательским интерфейсом. Чтобы корректно вводить ввод, вам необходимо добавить InputMultiplexer
, чтобы Stage
, а затем ваша текущая схема ввода получат входные данные.
Чтобы установить его, вы будете делать что-то вроде этого:
InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(stage);
multiplexer.addProcessor(gameScreenInputProcessor);
Gdx.input.setInputProcessor(multiplexer);
(образец кода, основанный на коде из https://code.google.com/p/libgdx/wiki/InputEvent)
Обратите внимание, что порядок важен (я предполагаю, что вы» я хочу, чтобы на этапе сначала были события, чтобы увидеть, касается ли пользовательский интерфейс, или нет). Кроме того, логическое возвращаемое значение из обработчиков входных событий более важно с мультиплексором, так как «обработанные» события не будут передаваться mutliplexer. События UI внутри Stage
имеют свой собственный «обработанный» флаг (в основном он делает правильные вещи, но есть некоторые тонкие различия).
Одна альтернатива InputMultiplexer
бы создать «GameScreenActor» (новый подкласс Actor
), который содержит ваш текущий экран игры, которые вы подключаете в глобальную Stage
. Тем не менее, вам придется переместить обработку ввода на сцене scene2d. Вероятно, это не правильный выбор для вас, но он жизнеспособный.
Хорошо, хотя я ... Я проверил документацию по InputMultiplexer ... ваш ответ делает смысл. Я попробую этот подход ... надеюсь, это сработает. Tnx много! :) Я знаком с обработкой входных данных в Android, надеюсь, что он работает аналогично :) – Veljko