Seite 1 von 1

Frage zu DirectInput (C#)

Verfasst: 07.04.2009, 17:10
von dba
Hallo!

Mein Projekt soll auf das Eventing von Windows Forms verzichten. schön wäre da die verwendung von Direct Input...
Das konkrete problem hierbei ist, dass wenn eine taste beispielsweise eine boolsche variable umsetzt (var = !var),
passiert das leider nicht einmalig, sondern natürlich hunderfach pro sekunde ;)
das heißt, es soll konkret erkannt werden, ob ich eine taste loslasse. Bisher schien es nur möglich, indem ich ich warte, bis die taste nicht mehr in der Liste ist und dann erst die dahinterstehende aktion ausführe. das find ich aber für diesen zweck ziemlich kompliziert.
was sagt ihr? wie würdet ihr das machen?

Liebe Grüße!

Re: Frage zu directe Input (C#)

Verfasst: 07.04.2009, 17:30
von Dirk Schulz
Hi,

du hast zwei Funktionen: KeyDown und KeyUp

dann brauchst du für jede Taste, die du nur kurz drücken willst, eine variable, die beim ersten Mal drücken auf die Taste auf true gesetzt wird.

PseudoCode:

Code: Alles auswählen

if( KeyUp(B) && tastegedrueckt[B] == true)
tastegedrueckt[B] = false;

if( KeyDown(B) && tastegedrueckt[B] == false)
{
     tastegedrueckt[B] = true;
     ...
}
Sobald du die Taste also einmal gedrückt hast, wird tastegedrueckt auf true gesetzt und die Verzweigung wird nicht mehr ausgeführt.

Hoffe das hilft.

Dirk Schulz