Einzelnen Beitrag anzeigen

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, 15: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