Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DXINPUT FRAGE (https://www.delphipraxis.net/11736-dxinput-frage.html)

Daniel B 15. Nov 2003 18:30

Re: DXINPUT FRAGE
 
Hast Du auch KeyPreview von Form1 auf True gestellt?

Seniman 15. Nov 2003 19:01

Re: DXINPUT FRAGE
 
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:
Delphi-Quellcode:
GedrLinks:= (isleft in Form1.DxInput1.States);
Nun kannst du irgendwo vorher in dieser Timer-Prozedur folgendes abfragen:
Delphi-Quellcode:
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

Daniel B 15. Nov 2003 19:04

Re: DXINPUT FRAGE
 
Zitat:

Zitat von Seniman
Nach dem ersten Tastendruck ist eine kleine Pause und dann kommen ganz viele "f"s.

Das liegt halt einfach da dran wie es der User in Windows eingestellt hat, manche habe halt die Anlagverzögerung ausgemacht, dann gibt es diese Pause nicht.

ATwardz 16. Nov 2003 23:11

Re: DXINPUT FRAGE
 
Hmmmmm, ja,

ich danke euch für eure Vorschläge doch es ist leider nun mal nicht das was ich suche!

Jeder kennt es, das legendäre "Spielhöllen-feeling", wo man wie ein Besessener auf die Tasten gehauen hat um zu schiessen!
Jeder Druck, ein Schuss! So wollte ich es eigentlich auch machen, das der der die schnellere Hand hat einen Vorteil hat!

Deswegen meinte ich auch das es bestimmt schon Hundert Leute gemacht heben, weil es halt zum Ursprung der Videospiele zählt!

Ich bin mir bewusst , das ich mit einen extra Timer eine permanente Abfrage machen könnte!
Ich wollte nur wissen und denke eigentlich das es irgendwo in diesem Delphiuniversum eine elegantere Lösung gibt!

Danke an alle!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Seite 2 von 2     12   

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