Erste Etappe Koordinaten der Schauspieler, der in der Tabelle in libGDX

Ich möchte erstellen Sie eine schwimmende helfen, die Blase einzuführen, die grundlegende Funktionsweise von meinem Spiel. Diese Blase sollte schweben über die Schauspieler will ich es erklären, wie in der Abbildung unten gezeigt.

Erste Etappe Koordinaten der Schauspieler, der in der Tabelle in libGDX

Um dies zu erreichen, möchte ich die Koordinaten des Schauspielers, in diesem Fall die linke Taste, und dann kann ich hinzufügen, die Blase Schauspieler auf die Bühne, vor der alles andere. Der Letzte Teil ist einfach genug, aber ich habe Mühe mit dem empfangen der tatsächlichen Koordinaten der Taste, wie es ist in einer Tabelle.

Die zwei Schaltflächen Hinzugefügt, um eine Tabelle wie diese:

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

Ich habe versucht die naheliegendste Ansatz:

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

Gibt mir (in der Reihenfolge der sysouts): [0.0, 0.0] und [40.0, 130.0]. Die Letzte position ist eigentlich die position der Tabelle, füllt die Blaue Fläche auf dem Bildschirm. So ist dieser Ort natürlich findet etwas, das die Tabelle nicht auf Platz, der Schauspieler, und kann nicht verwendet werden (da ich nur am Ende mit dem Speicherort der Tabelle).

(Ich habe auch versucht, mit t.localToStageCoordinates hier, t ist dabei die Tabelle. Zu gleichen Ergebnissen.)

Andere Lösung, die ich versucht war zu rekursiv durchsuchen alle Eltern:

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

Leider, das gibt mir die gleichen. Die sysouts gibt die folgenden:

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

Also ich kann nicht scheinen, um Holen Sie sich die aktuellen Positionen der Gruppen/Akteure innerhalb der Tabelle.

Wie soll ich das tun?

  • In Ergänzung zu meiner Antwort, ich Frage mich, wenn Sie versuchen, um die position der Schauspieler vor dem ersten mal die Akteure gerendert werden? Wenn Sie versuchen, um die Lage, bevor der Rahmen hat Zeit gehabt, richtig zu machen ein layout, Sie werden immer die falschen Koords. In meinem Beispiel habe ich lindern können dies, indem Sie einen Ereignis-listener, um die korrekte position nach dem layout durchgeführt wurde.
  • Ich habe eine Table innerhalb einer VerticalGroup in einem anderen Table in meinem Stage. Ich folgte dem unten Antwort, aber es hat nicht funktioniert. Das problem war, dass die Elemente nicht verlegt wurden, bevor ich beauftragte die Start-position des Tisches. Keiner der Bühne, Lage übersetzung, die Antwort war notwendig. table.getX() hab mir die Lage in dem Stadium, dass ich brauchte, sobald ich habe es nach dem layout passiert.
  • Danke für den Tipp. Ich hatte das gleiche Problem. Dauerte eine lange Zeit zu erkennen, dass ich die Berechnung von Akteur-Positionen zu früh.
InformationsquelleAutor Erlend D. | 2013-08-06
Schreibe einen Kommentar