Thema: Delphi DXINPUT FRAGE

Einzelnen Beitrag anzeigen

Benutzerbild von Seniman
Seniman

Registriert seit: 15. Sep 2003
Ort: Münster
98 Beiträge
 
#12

Re: DXINPUT FRAGE

  Alt 15. Nov 2003, 20:01
Hallo,

ja es ist richtig. Wenn man eine Taste gedrückt hält, dann wird auch das OnKeyDown-Event wiederholt ausgeführt. Das ist aber anders als bei den DXInput.States. Beispiel: Ich halte die Taste "f" ein paar Sekunden fest:
ffffffffffffffffffffffffff
Nach dem ersten Tastendruck ist eine kleine Pause und dann kommen ganz viele "f"s. Bei jedem f würde jetzt das OnKeyDown-Event ausgeführt. Das hat allerdings nichts mit den Frames des Timers zu tun. In den meisten Fällen halte ich diese Umsetzung aber für ausreichend.
Ansonsten eine neue Idee:
Für jede Taste, um die es geht, eine Variable vom Typ boolean an. Für die Taste "Links" zum Beispiel:

Delphi-Quellcode:
var
  Form1: TForm1;
  GedrLinks: Boolean;
  // usw...

implementation
Denn setzt du ganz an den Schluss der Timer-Prozedur folgendes:
GedrLinks:= (isleft in Form1.DxInput1.States); Nun kannst du irgendwo vorher in dieser Timer-Prozedur folgendes abfragen:
if (not GedrLinks) and (isleft in Form1.DxInput1.States) then //Code D.h. in dem vorherigen Frame darf die Taste nicht gedrückt gewesen sein, aber jetzt muss sie es.

So sollte es klappen.
Grüße
Seniman
  Mit Zitat antworten Zitat