![]() |
Tastendruck erkennen zur jeder zeit
Zurzeit habe ich es in meinem projekt so realisiert das immer wenn ein timer "ausläuft" geprüft wird ob eine taste gedrückt wird:
Delphi-Quellcode:
jetzt habe ich das problem das man in meinem programm die geschwindigkeit von diesem timer selber einstellen kann! somit reagiert der timer auf tastenbefehle nur wenn er grad die befehle ausführt!
procedure TForm1.Timer2Timer(Sender: TObject);
begin {.....} if GetAsyncKeystate(VK_RIGHT) < 0 then begin if ((richtung = 1)or(richtung = 3)) then richtung:=2; end; if GetAsyncKeystate(VK_LEFT) < 0 then begin if ((richtung = 1)or(richtung = 3)) then richtung:=4; end; if GetAsyncKeystate(VK_UP) < 0 then begin if ((richtung = 2)or(richtung = 4)) then richtung:=1; end; if GetAsyncKeystate(VK_DOWN) < 0 then begin if ((richtung = 2)or(richtung = 4)) then richtung:=3; end; {.....} end; bei einem interwall von 500ms und einer durchschnittsdrückzeit von 100 ms kommt es vor das manche tastendrücke nicht beachtet werden was die spielbarkeit meines programms schwer beeinträchtigt! im moment habe ich es so gelöst das ich diesen code in einen weiteren timer intigriert habe der alle 1ms die befehle ausführt! dabei reagiert das rpogramm an sich aber viel langsamer weil es ja jede ms prüft ob die tasten gedrückt sind! wo genau muss ich den code einfügen das ich die timergeschichte vergessen kann! ich habe es in formpresskey probiert aber es will nicht! torley |
Re: Tastendruck erkennen zur jeder zeit
wenn du die Tasten live mitbekommen willst nimm doch einfach die OnKeyDown- und OnKeyUp-Ereignisse. Und zu deinem Timerproblem. Wer/Was hindert dich daran mehrere Timer zu verwenden? Du musst ja nicht jeden Timer vom Benutzer einstellbar machen lassen.
|
Re: Tastendruck erkennen zur jeder zeit
das problem ist ja nicht das ich weniger timer benutzen will!
ich hab nur gemerkt das der timer der jede ms die tasten prüft mein spiel verlangsamt! FormKeyDown reagiert bei mir nicht! bei spielen mit den pfeiltasten werden alle buttons immer nacheinander anvisiert! (wär mein 2tes problem aber die timergeschichte hat vorrang) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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