api:documentation:spiele:maus
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
api:documentation:spiele:maus [2021/01/14 17:16] – [Beispiel 1: Verschieben von Rechtecken mit der Maus] Martin Pabst | api:documentation:spiele:maus [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
===== a) Reaktion auf Mausereignisse durch Überschreiben von Ereignishandlern eines grafischen Objekts ===== | ===== a) Reaktion auf Mausereignisse durch Überschreiben von Ereignishandlern eines grafischen Objekts ===== | ||
<WRAP center round info 80%> | <WRAP center round info 80%> | ||
+ | Jedes graphische Objekt hat die Methoden | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | Diese Methoden kann man in einer Unterklasse überschreiben und so auf die entsprechenden Ereignisse reagieren. \\ \\ | ||
+ | **Tipps:** | ||
+ | * Die Parameter '' | ||
+ | * '' | ||
+ | * Die Methode '' | ||
+ | * Die Methode '' | ||
</ | </ | ||
Zeile 16: | Zeile 28: | ||
| | ||
- | | + | |
} | } | ||
Zeile 41: | Zeile 53: | ||
mouseYLastTime = y; | mouseYLastTime = y; | ||
mouseDown = true; | mouseDown = true; | ||
+ | // Ab jetzt soll onMouseMove auch aufgerufen werden, wenn sich der | ||
+ | // Mauszeiger außerhalb des Objektes befindet: | ||
+ | startTrackingEveryMouseMovement(); | ||
} | } | ||
Zeile 53: | Zeile 68: | ||
| | ||
mouseDown = false; | mouseDown = false; | ||
+ | stopTrackingEveryMouseMovement(); | ||
} | } | ||
Zeile 64: | 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 '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | Dabei bedeutet '' | ||
+ | Wird das Objekt einer Klasse, die '' | ||
</ | </ | ||
===== 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! |
< | < | ||
Zeile 73: | Zeile 97: | ||
<script type=" | <script type=" | ||
+ | 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, | ||
+ | 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; | ||
+ | |||
+ | | ||
+ | setAlpha((1.0 / 60) * timeToLive); | ||
+ | timeToLive--; | ||
+ | if(timeToLive < 0) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
</ | </ | ||
api/documentation/spiele/maus.1610641019.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)