![]() |
Re: solange taste gedrücktt tue! ???
Ja, Sorry, ich hab mich da in der Schnelle vertippt.
|
Re: solange taste gedrücktt tue! ???
:wall: ich dummerchen. trotzdem geht es auch richtig geschrieben nicht.
und ich hab es doch so gemacht, wie ihr es mir gesagt habt.
Delphi-Quellcode:
:gruebel:
procedure TForm1.Timer1Timer(Sender: TObject);
begin if GetAsyncKeyState(vk_left)<0 then walk(1) if GetAsyncKeyState(vk_right)<0 then walk(3); end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Timer1.Enabled:=true; end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Timer1.Enabled:=false; end; |
Re: solange taste gedrücktt tue! ???
wegen getasync... kannst du das KEyDown und KeyUp weglassen und einfach den Timerenabled auf true setzen solange das Image sich bewegen soll.
|
Re: solange taste gedrücktt tue! ???
mach doch einfach 2 timer, einen für links und einen für rechts.
dann überprüfst du im FormKeyDown ob die linke oder die rechte pfeiltaste gedrückt wird und startest dann den timer für links oder rechts. |
Re: solange taste gedrücktt tue! ???
- war mumpitz -> gelöscht
Grüße Klaus |
Re: solange taste gedrücktt tue! ???
Zitat:
|
Re: solange taste gedrücktt tue! ???
Ich hab jetzt 2 Timer eingebaut. Also zumindestens bewegt sich die Figur!
Aber ohne das ich eine Taste drücke und nur nach rechts. Ich hab auch das Intervall des Timers auf 200 gestellt , damit es flüssig wirkt und dafür die Schrittgröße verkleinert. (Schrittgröße = Pixelzahl die das bild bei der procedure walk verschoben wird) also hier ist der neue Quelltext, der mir neue rätsel aufweißt.
Delphi-Quellcode:
bei der gelegenheit könnte mir vllt auch jemand erklären, was die function getasynckeystate bewirkt.
procedure TForm1.Timer1Timer(Sender: TObject);
begin walk(1); end; procedure TForm1.Timer2Timer(Sender: TObject); begin walk(3) end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if GetAsyncKeyState(vk_left)<0 then Timer1.Enabled:=true; if GetAsyncKeyState(vk_right)<0 then Timer2.enabled:=true; end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if GetAsyncKeyState(vk_left)<0 then Timer1.Enabled:=false; if GetAsyncKeyState(vk_right)<0 then Timer2.Enabled:=false; end; das raffe ich nicht so ganz? :gruebel: aber schon mal danke für euere unterstützung grüße der flo |
Re: solange taste gedrücktt tue! ???
Wenn sie sich bewegt bevor Du was machst, hast du wahrscheinlich vergessen die Timer von Haus aus, auf false zu setzen ;) (im OI, Enabled:=false)
|
Re: solange taste gedrücktt tue! ???
Nein...
So war das nicht gemeint. laso: GetAsyncKeystate liefert dir in DEM MOMENT wo du es abfragst, ob gerade in diesem Moment die Taste gedrückt ist. Dann brauchst du also keinen Timer mehr für die Bewegung, sondern nur einen Timer in dem du mit GetAsyncKeystate abfragst, ob grad die nach-links-taste gedrückt ist oder nicht. Um flori-da noch einmal zu zitieren:
Delphi-Quellcode:
Das kommt in einen Timer, der ständig mit einem Interval von ca. 200 ms aktiv ist. Der überprüft dann alle 200 ms ob gerade die nach links taste oder die nach rehctsteste gedrückt ist und macht dann dies und jenes ;)
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! ???
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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-2025 by Thomas Breitkreuz