2015-09-14 2 views
3

Я использую LibGDX и Scene2d, и я хочу создать всплывающее окно, которое выглядит так, как показано на изображении ниже.Как центрировать актеров в группе с Scene2d и LibGDX?

До сих пор я создал таблицу и задал фон полупрозрачным цветом. Затем я создал изображение с белым фоном. Это изображение расширяет x, поэтому оно центрировано. Теперь я хочу иметь ярлык, расположенный внутри изображения. Чтобы наложить эти два актера, я создал группу, но я не мог узнать, как центрировать что-то в группе. Как я могу это сделать?

scene2d example

Вот мой код:

Table table = new Table(); 
table.top(); 
table.setFillParent(true); 
table.setBackground(getColoredBackground(color)); 

labelStyle = new Label.LabelStyle(font, fontColor); 
label = new Label(message, labelStyle); 

Image image = new Image(whiteBackground); 
image.setSize(table.getWidth() - padding, label.getHeight() + extraHeight); 

Group group = new Group(); 
group.setSize(image.getWidth(), image.getHeight()); 

group.addActor(image); 
group.addActor(label); 
table.add(group).expandX().padTop(padTop); 

ответ

6

Группа имеет его собственную систему координат. Это означает, что когда вы устанавливаете позицию актера на (0,0), а затем добавляете его в группу, которая фактически находится в позиции (100, 100), тогда объект будет находиться в позиции (100, 100) относительно сцены.

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

label.setPosition(group.getWidth()/2f - label.getWidth()/2f, group.getHeight()/2f - label.getHeight()/2f); 

после установки Group размера. Помните, что при настройке положения актера мы определяем его левое нижнее угловое положение, и именно поэтому вам нужно также вычесть половину ширины/высоты ярлыка.

Конечно, вы можете изменить у положения не должны быть по центру вертикально и

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