2016-03-13 8 views
2

Ну название говорит все это, я хочу, чтобы получить позицию актера внутри таблицыLIBGDX- получает положение актера внутри таблицы

Кнопка Кнопка = новая кнопка (Bs);

таблица.add (кнопка). Ширина (50). Высота (50);

стол.top(). Центр();

Заранее спасибо.

Редактировать: button.localToStageCoordinates(new Vector2(button.getX(), button.getY())); Я получаю приблизительное положение, но не точное, вот скриншот, красные квадраты занимают позиции, а прозрачные квадраты - это кнопки.

enter image description here

ответ

3

Try:

button.localToStageCoordinates(new Vector2(button.getX(), button.getY())); 

Это должно возвращать Vector2 с реальным положением. Я думаю, что table.validate() нужно вызвать, прежде чем вы сможете получить позицию своей кнопки.

validate() calls layout(). layout() будет автоматически вызываться в следующем розыгрыше после создания таблицы. Если вам нужна позиция сразу после инициализации таблицы, я думаю, что вам нужно будет вызвать метод layout().

расположения() Описание:

Вычисляет и кэширует любую информацию, необходимую для рисования и, если этот актер имеют ребенок, позицию и размеры каждый ребенок, вызовы аннулируют() любой каждый ребенок, ширина или высоту изменилось и вызывает validate() для каждого дочернего элемента. Этот метод почти никогда не должен вызываться напрямую, вместо этого следует использовать validate(). Заменяет: макет() в WidgetGroup

Validate() Описание:

Обеспечивает актер был выложен. Вызов layout(), если invalidate() был вызван с момента вызова в прошлый раз validate(), или если актер иначе должен быть выложен. Этот метод обычно вызывается в Actor.draw (Batch, float) до выполнения чертежа. Определенный: Validate() в макете

+0

Это значит, что у моей сцены нет указанного видового экрана? потому что у меня есть, я попробую, когда вернусь домой – centenond

+0

На каждом этапе есть окно просмотра. Если вы не укажете один, ScalingViewport будет создан –

+0

, что я пытаюсь сказать, как метод localToStageCoordinates будет знать, какие координаты сцены я хочу, так как этап с указанными координатами просмотра не будет таким же, как этап без указанного окна просмотра, битва Я попробовал это, и это дало мне приблизительную позицию, но не точную позицию. – centenond

2

Хорошо мне удается сделать это следующим образом:

button.localToParentCoordinates(new Vector2(table.getX(), table.getY())); 

Спасибо Ясен Bagalev, указал мне на правую сторону.

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