2015-07-03 4 views
0

У меня есть прокручиваемая таблица, содержащая все основные функции моего меню, кнопок, заголовка и т. Д. Теперь я хочу «hud» поверх этого, который не прокручивается, например, в facebook messenger , с вкладками для «друзей» и «настроек» и т. д. Проблема заключается в том, что когда я пытаюсь добавить что-то еще на сцену после того, как таблица отключена, я попытался добавить еще один этап, но затем вход не работает, ве попытался добавить еще одну таблицу, но тогда позиционирование выключен (но вход работает)Scene2d добавление актеров поверх таблицы

Текущий код:

 //table.top(); 
     table.add(heading).colspan(2); 
     table.getCell(heading).spaceBottom(100); 
     table.row(); 
     table.add(buttonPlay).colspan(2); 
     table.getCell(buttonPlay).spaceBottom(100); 
     table.row(); 
     table.add(buttonExit).colspan(2); 
     table.getCell(buttonExit).spaceBottom(1000); //large spacing to test so scrolling works fine 
     table.row(); 
     table.add(buttonFriends); 
     table.add(buttonSettings); 
     hudTable.add(buttonHud); 
     hudTable.debug(); 
     stage.addActor(container); 
     stage.addActor(hudTable); 

дает результат, который выглядит следующим образом:

image

Все это работ, главных свитков таблицы, HUD остается неподвижным, пока я прокручиваю, и вход работает, но позиционирование выключено, и я не могу понять, как это исправить, поэтому HUD находится сверху. Есть идеи? Неужели я ошибаюсь?

+0

Вы пробовали с помощью inputMultiplexer при добавлении двух этапов обработки входных сигналов от оба стадии. Читайте здесь http://badlogicgames.com/forum/viewtopic.php?f=11&t=11916 – Sneh

+0

У меня нет, спасибо! @Sneh Может быть, я немой, но я ничего не нашел о inputMultiplexer в этой ссылке. –

+0

Сообщите мне, если проблема устранена. – Sneh

ответ

1

Как уже упоминалось в комментариях, вы можете использовать класс InputMultiplexer для обработки нескольких этапов.

Внутри InputMultiplexer существует метод, называемый addProcessor(), который принимает любой объект, который реализует InputProcessor и позволяет обрабатывать ваши входы.

Класс этап уже реализует InputProcessor см Javadocshttp://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Stage.html

Так скажем, у вас есть два этапа

Stage stage1 = new Stage(); 
Stage stage2 = new Stage(); 

Теперь все, что вам нужно сделать, это

InputMultiplexer multiPlexer = new InputMultiplexer(); 
multiPlexer.addProcessor(stage1); 
multiPlexer.addProcessor(stage2); 

EDIT

Просто для справки это, как я делаю это с помощью 1 этапа

public class BattleScreen extends Table { 
    private BattleActionScreen battleActionScreen; 
    private BattlePokemonScreen battlePokemonScreen; 
} 

Оба частных членов этой таблицы также таблицы. В моей игре я добавляю BattleScreen внутри сцены.

EDIT Вот изображение, чтобы продемонстрировать тот же Battle Screen Image

+0

Спасибо, попробуй, когда я вернусь домой и дам тебе знать! :) –

+0

Не беспокойтесь, раньше у меня были проблемы с подобными проблемами, хотя я не использовал несколько этапов, но я сделал несколько таблиц и добавил их на сцену и позиционировал их. – Sneh

+0

Как вы это сделали? Я пробовал 'hudTable.setPosition (0, 0);' Но это дает тот же результат, что и на изображении. Не знаю, почему. –

Смежные вопросы