Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:spiele:maus

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
api:documentation:spiele:maus [2021/01/14 17:45] – [a) Reaktion auf Mausereignisse durch Überschreiben von Ereignishandlern eines grafischen Objekts] Martin Pabstapi:documentation:spiele:maus [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 12: Zeile 12:
 Diese Methoden kann man in einer Unterklasse überschreiben und so auf die entsprechenden Ereignisse reagieren. \\ \\  Diese Methoden kann man in einer Unterklasse überschreiben und so auf die entsprechenden Ereignisse reagieren. \\ \\ 
 **Tipps:** **Tipps:**
-  * Die Parameter ''x'' und ''y'' der Ereignishandler sind die Koordinaten des Mauszeigers zum Zeitpunkt des Ereignisses +  * Die Parameter ''x'' und ''y'' der Ereignishandler sind die Koordinaten des Mauszeigers zum Zeitpunkt des Ereignisses \\ \\  
-  * ''key == 0'' bedeutet linke Maustaste, ''key == 1'' bedeutet mittlere Maustaste und ''key == 2'' bedeutet rechte Maustaste. +  * ''key == 0'' bedeutet linke Maustaste, ''key == 1'' bedeutet mittlere Maustaste und ''key == 2'' bedeutet rechte Maustaste. \\ \\  
-  * Die Methode ''startTrackingEveryMouseMovement'' bewirkt, dass fortan **jedes** Mausereignis zum Aufruf des entsprechenden Ereignishandlers beim Objekt führt, auch wenn sich der Mauszeiger außerhalb des Objekts befindet. +  * Die Methode ''startTrackingEveryMouseMovement'' bewirkt, dass fortan **jedes** Mausereignis zum Aufruf des entsprechenden Ereignishandlers beim Objekt führt, auch wenn sich der Mauszeiger außerhalb des Objekts befindet. \\ \\  
-  * Die Methode ''stopTrackingEveryMouseMovement'' beschränkt die Mausereignisse wieder auf diejenigen innerhalb des Objekts.+  * Die Methode ''stopTrackingEveryMouseMovement'' beschränkt die Mausereignisse wieder auf diejenigen innerhalb des Objekts. \\ \\ 
 </WRAP> </WRAP>
  
Zeile 80: Zeile 80:
 ===== b) Registrieren eines MouseListeners beim World-Objekt ===== ===== b) Registrieren eines MouseListeners beim World-Objekt =====
 <WRAP center round info 80%> <WRAP center round info 80%>
 +Das Interface ''MouseListener'' besitzt Methoden
 +  * ''void onMouseDown(double x, double y, int button)''  (wird aufgerufen, wenn eine Maustaste nach unten gedrückt wird)
 +  * ''void onMouseUp(double x, double y, int button)''  (wird aufgerufen, wenn eine Maustaste losgelassen wird)
 +  * ''void onMouseMove(double x, double y)''  (wird aufgerufen, wenn der Mauszeiger sich bewegt)
 +  * ''void onMouseEnter(double x, double y)''  (wird aufgerufen, wenn der Mauszeiger sich in den Grafikbereich hineinbewegt)
 +  * ''void onMouseLeave(double x, double y)''  (wird aufgerufen, wenn der Mauszeiger sich aus dem Grafikbereich hinausbewegt)
 +Dabei bedeutet ''button == 1'': linke Maustaste, ''button == 2'': mittlere Maustaste und ''button == 3'': rechte Maustaste. \\ \\ 
 +Wird das Objekt einer Klasse, die ''MouseListener'' implementiert, beim ''World''-Objekt mittels seiner Methode ''addMouseListener'' registriert, so werden die obigen Methoden aufgerufen, wenn die jeweiligen Mausereignisse auf dem Grafikbereich auftreten.
 </WRAP> </WRAP>
  
 ===== Beispiel 2: Mauszeigerspur ===== ===== Beispiel 2: Mauszeigerspur =====
-Starte das Programm und fahre mit der Maus über den Grafikausgabebereich!+Starte das Programm und fahre mit der Maus über den Grafikausgabebereich! Probiere auch die linke Maustaste aus.
 <HTML> <HTML>
  
Zeile 89: Zeile 97:
  
 <script type="text/plain" title="Mouse_2.java"> <script type="text/plain" title="Mouse_2.java">
 +World w = new World(800, 600);
 +w.addMouseListener(new MyMouseListener());
 +while(true);
 +
 +class MyMouseListener implements MouseListener {
 +   
 +   Color color = Color.white;
 +
 +  public void onMouseUp(double x, double y, int button) {
 +    color = Color.white;
 +  }
 +
 +  public void onMouseDown(double x, double y, int button) {
 +    color = Color.red;
 +  }
 +
 +  public void onMouseMove(double x, double y) {
 +      FadingCircle c = new FadingCircle(x, y, 10);
 +      c.setFillColor(color);
 +  }
 +
 +  public void onMouseEnter(double x, double y) {
 +    //TODO: Methode füllen
 +  }
 +
 +  public void onMouseLeave(double x, double y) {
 +    //TODO: Methode füllen
 +  }
 +
 +}
 +
 +class FadingCircle extends Circle {
 +   
 +   int timeToLive = 60;
 +
 +   public void act() {
 +      setAlpha((1.0 / 60) * timeToLive);
 +      timeToLive--;
 +      if(timeToLive < 0) {
 +         destroy();
 +      } 
 +   }
 +
 +}
 </script> </script>
  
api/documentation/spiele/maus.1610642754.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki