AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

IDLE nur bei Aktionen ausgeführt?

Ein Thema von Chefx · begonnen am 11. Jan 2010 · letzter Beitrag vom 11. Jan 2010
Antwort Antwort
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#1

IDLE nur bei Aktionen ausgeführt?

  Alt 11. Jan 2010, 16:36
Hey DPs,

Ich hab ein Problem mit der IDLE Procedure, die wird nur ausgeführt wenn man irgendwas in der auch macht also Taste drücken oder maus bewegen. Ich Programmiere gerade ein Spiel mit OpenGL und wenn ich da eine Taste drücke (ruckelt es) und wenn man da noch die maus bewegt läuft es normal, aber warum ist das so ?

hier mal der code:

Delphi-Quellcode:
procedure TForm1.Idle(Sender: TObject; var Done: Boolean);
begin

  LoopTime := gettickcount-starttime;
  TimeFactor := LoopTime*0.00000000001+1;
  StartTime := gettickcount;
  If xspeedtrain < 10 then xspeedtrain:=xspeedtrain+0.01;

  // Schiff Speedsystem
  If (getasynckeystate(ord('W')) < 0) or (getasynckeystate(ord('S')) < 0) then begin
    If (schiff.aky > 2.5) and (getasynckeystate(ord('W')) < 0) then schiff.aky:=schiff.aky+0.005;
    If (schiff.aky < 2.5) and (getasynckeystate(ord('S')) < 0) then schiff.aky:=schiff.aky-0.005;
  end
  else begin
    If schiff.aky < 0 then schiff.aky:=schiff.aky+0.005 else
    If schiff.aky > 0 then schiff.aky:=schiff.aky-0.005 else
      schiff.aky:=0;
  end;
  if not((getasynckeystate(ord('W')) < 0) or (getasynckeystate(ord('S')) < 0) and (schiff.aky < 0) and (schiff.aky > 0)) then
  schiff.transy := schiff.transy + ( schiff.aky*Timefactor);
  Render;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnIdle:=idle;
end;

Die exe zum testen ist im Anhang.
Steuerung:
S vorwärts
Pfeiltasten Sicht ändern


Ich danke im vorraus

MfG
Chefx
Angehängte Dateien
Dateityp: zip exe_idle_149.zip (739,9 KB, 1x aufgerufen)
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#2

Re: IDLE nur bei Aktionen ausgeführt?

  Alt 11. Jan 2010, 17:35
Idle wird aufgerufen, wenn die Message-Queue leer ist und die Applikation in den Idle-Zustand übergeht. Willst du weiterhin OnIdle-Ereignisse bekommen, musst due Done := false setzen. Alternativ geht aber auch ein Timer.
Uwe Raabe
  Mit Zitat antworten Zitat
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: IDLE nur bei Aktionen ausgeführt?

  Alt 11. Jan 2010, 18:16
danke Uwe Raabe,Problem gelöst
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:51 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