Uzyskanie współrzędnych scenicznych aktora w tabeli w libGDX

Chcę utworzyć pływający dymek pomocniczy, aby przedstawić podstawowe funkcjonowanie mojej gry. Ta bańka powinna unosić się nad Aktorem, który chcę wyjaśnić, jak pokazano na obrazku poniżej.

Aby to osiągnąć, chcę współrzędne aktora, w tym przypadku lewego przycisku, a następnie mogę dodać aktora z bąbelkami na scenę przed wszystkim innym. Ostatnia część jest dość łatwa, ale walczę z odzyskaniem rzeczywistych współrzędnych przycisku, tak jak jest w tabeli.

Dwa przyciski są dodawane do tabeli w następujący sposób:

t.add(btnLab).expandX().center();
t.add(btnSea).expandX().center();

Spróbowałem najbardziej oczywistego podejścia:

Vector2 loc = new Vector2(a.getX(), a.getY());
System.out.println("Loc: " + loc);
a.localToStageCoordinates(loc);
System.out.println("Loc: " + loc);

Daje mi to (w kolejności sysouts): [0.0, 0.0] i [40.0, 130.0]. Ostatnią pozycją jest w rzeczywistości pozycja tabeli, która wypełnia niebieski obszar ekranu. Więc ta lokalizacja oczywiście nie trafia w coś, co Tabela robi, aby umieścić Aktora, i nie może być użyta (ponieważ kończę się tylko lokalizacją Tabeli).

(Próbowałem również użyć tu t.localToStageCoordinates, będącego tabelą. Takie same wyniki).

Innym rozwiązaniem, które próbowałem, było rekursywne przeszukiwanie wszystkich rodziców:

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());
}

Niestety, to daje mi to samo. Sysouts daje następujące informacje:

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

Więc nie mogę uzyskać rzeczywistych pozycji grup / aktorów w tabeli.

Jak mam to zrobić?

questionAnswers(1)

yourAnswerToTheQuestion