Hallo,seh ich das richtig das es mit joygetposex keine Möglichkeit gibt die normalen Buttons gleichzeitig abzufragen ? Wenn ich Button 1 oder 2 drücke dann klappt es. Aber wenn ich beide drücke, dann ist entweder der eine oder andere oder gar kein Knopf "#True". Wie krieg ich hin das mir die Knöpfe gleichzeitig zurückgegeben werden, so wie in der Joystickbuttonroutine von Purebasic ? Denn da funktioniert es. Allerdings kann ich hier nicht alle Buttons eines 360 Gamepads ansprechen ??!
Der Status der Buttons wird in Bits gespeichert.
Deine Abfrage ist also doppelt falsch.
Zum einen musst je Button nummer das richtige Bit finden (1<<(Nummer-1)) und dann mit & abfragen:
Procedure joy_button(joystick.l, button.l)
joyGetPosEx_(joystick, @joy_status)
If joy_status\buttons & (1<<(button-1)) ; Buttons sind dann von 1 bis 12
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Ok danke für die Antwort Stargate. Ich schreib grad von der Arbeit. Werds heut abend mal testen. Wieso werden eigentlich nur die Buttons von 1 - 12 in Deinem Code abgefragt ? In der normalen Purebasic Joypadroutine geht es bis 32 ? Kannst Du mir vielleicht auch noch ne Erlärung zukommen lassen was 1<< genau bedeutet ? Ok irgendwas mit Bit finden. Aber ich weiss nicht was die Zeichen genau aussagen.
Jedenfalls schon mal danke für die Hilfe, ich melde mich heute abend nochmal.
Im Button-Feld werden durchaus 32-Bits also 32Buttons angeboten, aber ich kenne keine Gamepads die mehr als 12 Buttons haben.
(1<<n) bedeutet, dass die 1 (binär ...00000001) um n Bits nach links verschoben wird also für n=4 zB: ....00010000
mmm, supi Stargate das hat schon mal geklappt. Allerdings kapier ich das mit dem bitweisen verschieben immer noch net ganz. Muss mich da mal einarbeiten.
Hab jetzt jedenfalls das gleiche Problem mit Pov in der Routine (unten).
Woher weiss ich denn wo die bits für pov links und pov hoch liegen ? gibts da ne doku ?
So, was sagst Du Stargate ? Hab das ganze mal mit selbst ermittelten Konstanten, die Purebasic
irgendwie nicht bietet umgesetzt. Es gibt zwar Pov_left usw aber kein Pov_leftbackward oder Povleftforward. Naja, schau Dirs mal an und sag was Du davon hältst. Jedenfalls funktioniert das ganze so wie ich wollte. Kann man das so lassen ?
Der POV (PointOfView) enthält auch kein Bitmuster, da ja immer nur einie einzige Richtung gedrückt werden kann, das hat ja nichts mit den Buttons zu tun. Denn du verlässt ja oben schon die Procedure u.u.
Da steht dann für den POV-Wert: "Values for this member are in the range 0 through 35,900. "
Du kannst also einfach nur 100 teilen und dann hast du den Winkel.
Der PointOfView hat ja nicht nur 4 Richtungen, sondern je nach Möglichkeit auch diagonale, dann hättest du zB 45° oder so