Login
Newsletter
Werbung

Fr, 2. August 2002, 00:00

Multimedia-Entwicklung mit SDL Teil 2

Detail: Maus-Handling

Die Eventverarbeitung bei der Maus ist wesentlich simpler als die der Tastatur. Wir müssen eigentlich nur zwei Unterscheidungen machen: MouseMotion und MouseButton. Die Speicherung der Nutzdaten läuft auch hier so ab wie beim Keyboard. Es gibt zwei Strukturen. SDL_MouseMotionEvent für die Mausbewegung und SDL_MouseButtonEvent für die Mausknöpfe. Dort werden die eigentliche Nutzdaten gespeichert:

In SDL_event.h sind diese Mausstrukturen wie folgt definiert:

typedef struct {
 Uint8 type; /* SDL_MOUSEMOTION */
 Uint8 which; /* The mouse device index */
 Uint8 state; /* The current button state */
 Uint16 x, y; /* The X/Y coordinates of the mouse */
 Sint16 xrel; /* The relative motion in the X direction */
 Sint16 yrel; /* The relative motion in the Y direction */
} SDL_MouseMotionEvent;

typedef struct {
 Uint8 type; /* SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */
 Uint8 which; /* The mouse device index */
 Uint8 button; /* The mouse button index */
 Uint8 state; /* SDL_PRESSED or SDL_RELEASED */
 Uint16 x, y; /* The X/Y coordinates of the mouse at press time
*/
} SDL_MouseButtonEvent;

Natürlich sind auch diese beiden Strukturen wieder in dem bereits oben erwähnten SDL_Event-Union vorhanden.

SDL_Event

Was das SDL_Surface im SDL_Grafikbereich, ist das SDL_Event im Bereich des Event-Handling. Es ist das zentrale Element, über das auf alle Eventeigenschaften, egal von welchem Eingabegerät, zugegriffen wird. Wird ein Ereignis ausgelöst, so wird von SDL die Struktur des entsprechenden Eingabegerätes gefüttert (z.B. SDL_KeyboardEvent oder auch SDL_MouseMotion und SDL_MouseButton). Diese gerätespezifischen Strukturen sind wiederum alle zusammen in einem SDL_Event-Element vereint.

Für jedes auftretende Ereignis wird ein SDL_Event angelegt und in einem FIFO-Puffer gespeichert. Das heißt konkret, dass ein Pufferspeicher mit SDL_Event-Elementen angelegt wird. Das erste Element, welche in diesen Speicher geschoben wird, ist auch das Element, das später beim Auslesen auch wieder an erster Stelle steht.

Grafisch verdeutlicht sieht das wie folgt aus:

Marco Kraus

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung