Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:grafik:gruppierung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
api:documentation:grafik:gruppierung [2021/01/05 14:34] – angelegt Martin Pabstapi:documentation:grafik:gruppierung [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== Gruppieren von Grafikobjekten ====== ====== Gruppieren von Grafikobjekten ======
 <WRAP center round info 100%> <WRAP center round info 100%>
 +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)''
  
 </WRAP> </WRAP>
Zeile 7: Zeile 11:
 <div style="clear: both"></div> <div style="clear: both"></div>
 </HTML> </HTML>
 +===== Beispiel 1: Skala einer Bahnhofsuhr =====
 <HTML> <HTML>
 <div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Gruppieren1'}"> <div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Gruppieren1'}">
- 
 <script type="text/plain" title="Gruppieren1.java"> <script type="text/plain" title="Gruppieren1.java">
 +World w = new World(1000, 1000);
 +w.setBackgroundColor(Color.white);
  
 +Group g = new Group();
 +
 +for(int i = 0; i < 60; i++) {
 +   double height = 80;
 +   if(i % 5 == 0) {
 +      height = 120;
 +   }
 +   Rectangle r = new Rectangle(490, 0, 20, height);
 +   r.setFillColor(Color.black);
 +   r.rotate(i * 6, 500, 500);
 +   g.add(r);
 +}
 +
 +g.scale(0.3);
 </script> </script>
 </div> </div>
 +</HTML>
  
 +===== Beispiel 2: Rakete =====
 +<HTML>
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Gruppieren2'}">
 +<script type="text/plain" title="Gruppieren2.java">
 +Triangle spitze = new Triangle(400, 400, 380, 450, 420, 450);
 +spitze.setFillColor(Color.white);
 +Rectangle tank = new Rectangle(380, 450, 40, 100);
 +tank.setFillColor(Color.lightblue);
 +Triangle triebwerk1 = new Triangle(385, 550, 375, 580, 395, 580);
 +triebwerk1.setFillColor(Color.gray);
 +Triangle triebwerk2 = new Triangle(415, 550, 405, 580, 425, 580);
 +triebwerk2.setFillColor(Color.gray);
 +
 +Group rakete = new Group(spitze, tank, triebwerk1, triebwerk2);
 +
 +for(int i = 0; i < 600; i++) {
 +   rakete.move(0, -1);
 +}
 +</script>
 +</div>
 </HTML> </HTML>
api/documentation/grafik/gruppierung.1609853699.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki