Referenz - GETJOYSTICK
Syntax: GETJOYSTICK (id, buttons[, [x][, [y][, [z][, [r][, [u][, v]]]]]])
Typ: Funktion
Kategorie: Benutzereingabe
GETJOYSTICK gibt die Position des Joysticks oder des Gamepads und den Status seiner Buttons zurück.
- 'id' ist die Nummer des Joysticks. Die Joystick-IDs liegen zwischen 0 und 15.
- 'buttons' enthält ein Bitfeld, das angibt, welche Buttons gedrückt werden und welche nicht; ein gesetztes Bit repräsentiert dabei einen gedrückten Button:
Bit 0 wird gesetzt, wenn der erste Button gedrückt wird;
Bit 1 wird gesetzt, wenn der zweite Button gedrückt wird usw.
Bis zu 32 Buttons werden unterstützt. Siehe dazu BIT. - 'x' und 'y' geben die aktuelle Position des Joysticks relativ zum Maximalausschlag an. Sie liegen zwischen -1.0 und +1.0.
- 'z', 'r', 'u' und 'v' geben die Positionen zusätzlicher Joystick-Achsen zurück. Sie liegen zwischen -1.0 und +1.0.
- Der Rückgabewert (sofern abgefragt) gibt an, ob die Joystickabfrage erfolgreich war. Er ist entweder 0, wenn der Status erfolgreich abgefragt wurde, oder 1, wenn ein Fehler aufgetreten ist. Fehler können auftreten, wenn ungültige IDs oder Joysticks, die nicht existieren, angegeben werden, oder falls ein Fehler in der Joystick-API vorliegt.
Sobald GETJOYSTICK aufgerufen wird, speichert es den aktuellen Status der Joystick-Achsen und -Buttons in den Speicherstellen, deren Adressen übergeben wurden. Die Buttons-Speicherstelle muss dabei vom Typ INTEGER sein. Die Informationen zu den Achsen werden relativ zum Vollausschlag in SINGLE-Variablen gespeichert. Das Ergebnis -1.0 entspricht dabei einem Vollausschlag nach links (für x) oder nach vorne (für y); +1.0 bedeutet entsprechend einem Vollausschlag nach rechts oder hinten. 0.0 steht bei allen Achsen für die Ruheposition.
Ein Joystick wird immer zumindest die x- und y-Achsen unterstützen, manche Controller bieten aber noch zusätzliche Achsen. Wenn eine Achse nicht unterstützt wird, schreibt FreeBASIC an die entsprechende Speicherstelle den Wert -1000.00. Wenn der Joystick mit der angegebenen ID nicht verfügbar ist, gibt FreeBASIC -1 bei den Buttons zurück und alle Achsen liefern den Wert -1000.00.
Beispiel:
SCREENRES 640, 400
DIM AS SINGLE x, y
DIM AS INTEGER buttons, result, i
CONST JoystickID = 0
' Prüfe, ob die Joystick-Abfrage arbeitet:
IF GETJOYSTICK(JoystickID, buttons, x, y) THEN
PRINT "Joystick existiert nicht, oder ein Fehler ist aufgetreten."
PRINT
PRINT "Beliebige Taste drücken um fortzusetzen"
SLEEP
END
END IF
DO
GETJOYSTICK JoystickID, buttons, x, y
LOCATE 1,1
PRINT USING "x: +#.### y: +#.### Buttons: #### "; x; y; buttons
' Zeige an, welche Buttons gerade gedrückt werden:
FOR i = 0 TO 26
IF (buttons AND (1 SHL i)) THEN
PRINT "Button ";i ;" gedrueckt. "
ELSE
PRINT "Button ";i ;" nicht gedrueckt."
END IF
NEXT
' Bei Tastendruck beenden.
LOOP UNTIL LEN(INKEY)
Wie man sieht, muss der Funktionswert nicht abgefragt werden; GETJOYSTICK kann auch als Anweisung eingesetzt werden. In diesem Fall entfallen die Klammern, und der Rückgabewert geht verloren.
Unterschiede zu QB: neu in FreeBASIC
Unterschiede zu früheren Versionen von FreeBASIC:
- Seit FreeBASIC v0.17 unterstützt GETJOYSTICK acht Achsten.
- GETJOYSTICK existiert seit FreeBASIC v0.14
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht GETJOYSTICK nicht zur Verfügung und kann nur über __GETJOYSTICK aufgerufen werden.
Siehe auch:
GETMOUSE, GETKEY, Benutzereingaben
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|