Hey,
ich will ein Spiel machen, in dem man mit den Pfeiltasten steuert (und eventuell mit anderen Keys noch irgendetwas machen kann, Inventar aufrufen oder so).
Da ist mir als erstes _IsPressed() in den Sinn gekommen. Ich wuerde das dann in etwa so machen:
[autoit]#include <GUIConstantsEx.au3>
#Include <Misc.au3>
GUICreate("neu", 200, 200)
GuiSetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
If _IsPressed(26) Then
MsgBox(0, "", "up", 2) ; msg box nur zum Testen
ElseIf _IsPressed(28) Then
MsgBox(0, "", "down", 2)
; und so weiter
Else
EndIf
WEnd
[/autoit]In der Hilfe steht, es sei besser die user32.dll zu benutzen, wenn _IsPressed() haeufiger verwendet wird, was ja bei mir der Fall ist.
Beispiel aus der Hilfe:
[autoit]#include <Misc.au3>
[/autoit][autoit][/autoit][autoit]$dll = DllOpen("user32.dll")
[/autoit][autoit][/autoit][autoit]While 1
Sleep ( 250 )
If _IsPressed("23", $dll) Then
MsgBox(0,"_IsPressed", "End Key Pressed")
ExitLoop
EndIf
WEnd
DllClose($dll)
Nun meine Fragen:
- Soll ich mit der DLL arbeiten wie in der Hilfe empfohlen?
- Wieso ist in dem Beispiel-Code ein 250 ms Sleep? Wenn ich das einbaue, funktioniert mein Skript nicht aka stuerzt ab.
- Was haltet ihr von meiner Umsetzungsidee in Code #1? Sollte ich daran was aendern? Gibt es vielleicht eine bessere oder Performance-schonendere Methode? Wenn ich schon dabei bin, ist meine Umsetzung okay in Sachen Performance?
Danke!