AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tastenverzögerung abstellen

Ein Thema von Simme · begonnen am 9. Jan 2010 · letzter Beitrag vom 25. Mär 2010
Antwort Antwort
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#1

Tastenverzögerung abstellen

  Alt 9. Jan 2010, 10:55
Dann komme ich mal gleich zu meiner nächsten Frage.
Ich bin gerade dabei ein kleines Spiel zu erstellen und würde ganz gerne die Tastenverzögerung, die eben wie ein Textdokument auch mein Programm betrifft, abstellen. Dabei meine ich, dass er auf den ersten tastendruck reagiert, wenn man aber längere Zeit auf der Taste draufbleibt, der Computer nach dem ersten Zeichen erstmal eine Zeitverzögerung von ca. 0,5 Sekunden zulässt. Ich weiß, dass man das in Windows unter den Optionen für die Tastatur umstellen kann. Allerdings würde ich das ganz gern nur für mien Programm umstellen. Alle Beiträge, die ich bisher dazu gelesen habe, habe ich nicht so richtig verstanden oder es gab auch keine richtige Lösung des Problems.
Ich wäre dankebar für jede Hilfe.

Lg,
Simme
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 11:50
Um was für ein Programm handelt es sich denn? Wenn man in deinem Programm ebenso Text eingibt wäre es für den Nutzer verwirrend wenn er dort etwas tippt und nach einem Tastendruck bereits 5000 mal das Zeichen im Textfeld steht.
Wenn es nicht um die Eingabe von Text geht kann ich das ganze nicht verstehen. Denn die Tastenverzögerung sorgt nur dafür das "keypress" mehrfach verzögert ausgelöst wird. Die Anzahl an KeyDowns und KeyUps bleibt gleich.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#3

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 12:31
Nein, es handelt sich - wie gesagt - um ein Spiel.

Es geht dabei nicht um die Anschlagsverzögerung, sondern darum, dass wenn ich beispielsweise die Taste 'f' gedrückt halte. Dann zeigt er einmal eine Reaktion und dann für ca. 0,5 Sekunden nichts. Und dann wird die Reaktion kontinuierlich und ohne Zeitverzögerung angezeigt. Ich möchte mit dem Tastendruck die Bewegung eines Images auf der Form erzeugen und dieses sollte sich schon von anfang an kontinuierlich und ohne Zeitverzögerung bewegen.

habt ihr eine Idee?

Lg,
Simme
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 15:57
Frag in einer Schleife oder einem Timer die entsprechende Taste mit GetAsyncKeyState ab.
Delphi-Quellcode:
if (GetAsyncKeyState(ord('A')) < 0) then
  Figur.X := Figur.X-1;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 16:11
das ist nicht mal nötig. Im KeyDown einfach den Timer anwerfen (mit der gewünschten Frequenz) und im KeyUp den Timer wieder abstellen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#6

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 16:30
Und wie werf ich den Timer an?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 16:41
Zitat von SirThornberry:
das ist nicht mal nötig. Im KeyDown einfach den Timer anwerfen (mit der gewünschten Frequenz) und im KeyUp den Timer wieder abstellen.
Das geht natürlich auch, ist aber mehr Aufwand. Die meisten Spiele haben sowieso schon eine Hauptschleife, in die sich die Tastenabfrage prima integrieren lässt.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 16:46
Zitat von Simme:
Und wie werf ich den Timer an?
TimeName.Enabled := true
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Tastenverzögerung abstellen

  Alt 9. Jan 2010, 19:07
Zitat von SirThornberry:
Die Anzahl an KeyDowns und KeyUps bleibt gleich.
OnKeyDown wird auch mehrmals aufgerufen.
OnKeyPress (WM_CHAR) ist eigentlich nur eine Wiederholung von OnKeyDown (WM_KEYDOWN), bei der der virtuelle Tastencode in ein ASCII-Zeichen übersetzt wurde.
MSDN-Library durchsuchenTranslateMessage
  Mit Zitat antworten Zitat
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#10

Re: Tastenverzögerung abstellen

  Alt 25. Mär 2010, 17:12
So, ich habe jetzt endlich herausgefunden, wie ein Timer arbeitet. Jetzt ist mir auch verständlich, dass ich damit ganz einfach das Problem beheben kann. =) Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz