Using mouse-events

Manchmal ist es sinnvoller, ein Maus­ereignis unabhängig von der draw-Funktion auszuwerten.

Dazu können sogenannte event-Funktionen (Ereignisfunktionen), wie im folgenden Beispiel dargestellt. genutzt werden.

Sobald die Maustaste niedergedrückt wird, erhält die globale Variable „rotanteil“ den Wert 255. Bei Abarbeitung der draw-Funktion wird nun mit diesem Wert gearbeitet. In dem Augenblick, wo die Maustaste wieder losgelassen wird, erhält die Variable „rotanteil“ wieder den Wert 0.

Eine typische Anwendung neben­läufiger Mausauswertung ist die Programmierung von Schaltflächen.

Übungen zur nebenläufigen Auswertung der Maustasten

1. Auftrage: Erstellung eines Ampelprogramms

Stellen Sie dazu eine Ampel (rot, gelb, grün) dar. Lassen Sie mit jedem Mausklick die Ampel umschalten.

2. Auftrag: Erweiterung der Ampel

Erweitern Sie das Ampelprogramm, so dass die Ampel nur umschaltet, wenn mit der Maus auf die Ampel geklickt wurde.

3. Auftrag: Test eines Schaltflächenprogramms

Testen Sie unten ab­ge­bildete Schalt­flächen­pro­gramm. Ändern Sie es derart, dass die Text­anzeige umschaltet, wenn die Maustaste losgelassen wird.

int knopfX = 20;
int knopfY = 20;
int knopfBreite=160;
int knopfHoehe=40;
int zeigeText=0;

void setup() {
  fill(0, 0, 255);
  size(200,200);
}

void draw() {
  background(200);
  rect(knopfX, knopfY, knopfBreite, knopfHoehe);
  
  if(zeigeText!=0) 
  {
    textSize(32);
    text("Hallo", 60, 100);
  }
}

void mousePressed() 
{
  if(mouseX>knopfX && mouseX < (knopfX+knopfBreite) && mouseY>knopfY && mouseY < (knopfY+knopfHoehe)) 
  {
    if(zeigeText==0)
     zeigeText=1;
    else
     zeigeText=0;
  }
}

Leave a Reply