Получение координат сцены актера в таблице в libGDX
Я хочу создать всплывающую подсказку, чтобы представить основы функционирования моей игры. Этот пузырь должен всплывать над Актером, которого я хочу объяснить, как показано на рисунке ниже.
Для этого мне нужны координаты актера, в данном случае левой кнопки, а затем я могу добавить пузырькового актера на сцену перед всем остальным. Последняя часть достаточно проста, но я пытаюсь получить фактические координаты кнопки, как в таблице.
Две кнопки добавляются в таблицу следующим образом:
t.add(btnLab).expandX().center();
t.add(btnSea).expandX().center();
Я попробовал самый очевидный подход:
Vector2 loc = new Vector2(a.getX(), a.getY());
System.out.println("Loc: " + loc);
a.localToStageCoordinates(loc);
System.out.println("Loc: " + loc);
Это дает мне (в порядке sysouts): [0.0, 0.0] и [40.0, 130.0]. Последняя позиция фактически является позицией таблицы, которая заполняет синюю область экрана. Таким образом, это местоположение явно пропускает что-то, что Таблица делает для размещения Актера, и не может быть использовано (так как я в итоге получаю только местоположение таблицы).
(Я также попытался использовать t.localToStageCoordinates здесь, t является таблицей. Те же результаты.)
Еще одно решение, которое я попробовал, - это рекурсивный поиск по всем родителям:
private static Vector2 getLoc(Actor a) {
return getLoc(new Vector2(a.getX(), a.getY()), a.getParent());
}
private static Vector2 getLoc(Vector2 loc, Actor g) {
System.out.println("Location: " + loc + ", Actor: " + g);
loc.x += g.getX();
loc.y += g.getY();
if(g.getParent() == null) return loc;
return getLoc(loc, g.getParent());
}
К сожалению, это дает мне то же самое. Sysouts дает следующее:
Location: [0.0:0.0], Actor: Table 40.0,130.0 944.0x508.0
Location: [40.0:130.0], Actor: Group 0.0,0.0 0.0x0.0
Location: [40.0:130.0], Actor: Group 0.0,0.0 0.0x0.0
Так что я не могу понять фактические позиции групп / субъектов в таблице.
Как я должен это сделать?