![]() |
solange taste gedrücktt tue! ???
Hi leute..
hab mal ne kleine frage: wie kann ich das machen, dass solange eine taste (pfeiltasten) gedrückt wird etwas gemacht wird? z.B. solange die Pfeiltaste nach links gedrückt wird soll eine figut (TImage ) nach links laufen. habs schon mit keydown und ner while-do-schleife probiert nud das hat nicht geklapt. bin gespannt auf euere Antworten. schon mal danke! grüße flo |
Re: solange taste gedrücktt tue! ???
Hallo,
Du könntest in dem OnKeyDown Ereignis der Form einen Thread starten und in dem OnKeyUp Ereignis den Thread wieder stoppen. Grüße Klaus |
Re: solange taste gedrücktt tue! ???
Fürs erste setzt du die Bewegung in einen TTimer.
Wenn die Taste gedrückt wird (KeyDown) setzt du TTimer.enabled auf true. Wenn KEyUp kommt auf false |
Re: solange taste gedrücktt tue! ???
das mit dem Timer hört sich gut an.
Doch wie kann ich dem Timer sagen , welche Taste ich drücke. Also zum Beispiel: falls die linke Pfeiltaste gerade gedrückt wird dann tue das ... usw. grüße der flo |
Re: solange taste gedrücktt tue! ???
P.S. außerdem weiß ich nicht , was ein thread ist > deswegen fand ich die version mit dem timer besser
|
Re: solange taste gedrücktt tue! ???
Oder du setzt das gesamte Spiel (ich nehme mal an so twas in der Arte ist es) gleich mit einem Main-Loop um (zB Timer), das ist eh besser. Dann kannst du regelmäßig mit GetAsyncKeyState die Tasten überprüfen
Diese könnte dann pseudocodemäßig so aussehen:
Delphi-Quellcode:
procedure CheckKeys;
begin if GetAsnycKeyState(vk_left)<0 then Player.MoveLeft; if GetAsyncKeyState(vk_right)<0 then Player.MoveRight end; procedure MainLoop; begin CheckKeys; Render; end; |
Re: solange taste gedrücktt tue! ???
kann ich das nicht in meinen timer einbauen?
zum beispiel so, wenn der timer "startet", enabled also true ist, dann soll er nach den key fragen der gerade gedrückt ist und in eine entsprechende richtung laufen.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin if GetAsnycKeyState(vk_left)<0 then Player.MoveLeft; if GetAsyncKeyState(vk_right)<0 then Player.MoveRight ... end; |
Re: solange taste gedrücktt tue! ???
dito
|
Re: solange taste gedrücktt tue! ???
ok :?
das scheint doch nicht zu klappen. er sagt, dass GetAsnycKeyState ein undefinierter bezeichner ist. kann das auch an meiner delphi version liegen ( Delphi 3)?? |
Re: solange taste gedrücktt tue! ???
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz