Inhaltsverzeichnis

Gruppieren von Grafikobjekten

Oft möchte man mehrere Grafikobjekte zu einem Objekt zusammenfassen, damit man alle zusammen verschieben, drehen, einblenden, ausblenden usw. kann. Für diesen Zweck gibt es die Klasse Gruppe. Andere Objekte lassen sich ihr entweder durch Übergeben an den Konstruktor oder auch später mit der Methode add hinzufügen.

Tipp 1: Wird ein Grafikobjekt (von Shape abgeleitete Klasse, also Rechteck, Kreis, Sprite, …) durch Aufruf der Methode destroy zerstört und gehört es gerade einer Gruppe an, so wird es automatisch aus dieser entfernt. Du musst Dich nicht darum kümmern.

Tipp 2: Wird ein Grafikobjekt, das einer Gruppe angehört, per add-Methode einer weiteren Gruppe hinzugefügt, so wird es automatisch aus ersterer entfernt. Ein Grafikobjekt kann immer nur in maximal einer Gruppe enthalten sein. Diese Gruppe kann aber natürlich in einer anderen Gruppe enthalten sein (Ineinanderschachteln erlaubt!).

Tipp 3: Muss immer wieder überprüft werden, ob eine Menge von Objekten (z.B. die Schüsse eines Raumschiffs) mit Elementen einer anderen Menge von Objekten (z.B. Gesteinsbrocken) kollidiert, so empfielt es sich, die beiden Sorten von Objekten in zwei Gruppen zu „verpacken“ und die Kollisionen mithilfe der Methode getCollisionPairs(Group otherGroup, boolean maxOneCollisionPerShape) zu überprüfen. Sie wird deutlich schneller abgearbeitet als zwei ineinandergeschachtelte Wiederholungen. Zum Überprüfen der Kollision aller Elemente einer Gruppe mit einem einzelnen Grafikobjekt gibt es die Methode getCollidingShapes(Shape shape).

Beispiel 1: Skala einer Bahnhofsuhr

Beispiel 2: Rakete