Forum: Multimedia
Delphi
by sniper_w,
8. Feb 2005
Sinn der Sache ist so:
Du machst eine , sag ma´ so, MainLOOP, in der du alles was zu erledigen ist , erledigst. Zum B., wenn ein Objekt jede 1/n Sekunde bewegt sein muss, dann tust du es und merskt dir die Zeit des Geschehens, beim nächsten Mal überprüfst du ob genug Zeit vergangen ist, wenn ja , beweg es, merk wieder die Zeit usw.
Forum: Multimedia
Delphi
by sniper_w,
8. Feb 2005
Nun wenn du ein Spiel machen willst, dann bitte nicht mit irgendwelchem Timer, davon rate ich dich herzlichst ab.
So, wenn du mit VLC was machst, dann benutze Application.OnIdle event (siehe Hife von Delphi). Drin musst du nur Variable Done auf Fales setzten.
An sonsten, gebe ich hier mal ein Code s. aus meiner Game "funny toggle".
...
Forum: Multimedia
Delphi
by sniper_w,
8. Feb 2005
QueryPerformanceCounter( currentTime );
// currentFrame - frameTime >>> g_FrameInterval !!!!!!!!!!!
speed := (currentTime - frameTime) / Freq;
frameTime := currentTime;
// now we have a TIME BASED rotation
angx := angx + (170 + rot_speed )* speed;
if angx>359 then angx := 0;
angy := angy + (160 + rot_speed ) * speed;
Forum: Multimedia
Delphi
by sniper_w,
8. Feb 2005
Also du brauchst Zeitabhängige Bewegungen zu implementieren. Da brauchst du nicht jede 1/30 sekunde eine Prozedur aufzurufen, sondern kannst auch 320 mal pro Sekunde diese "Draw" Prozedure aufrufen. Das Hacken ist dass du die Koordinaten der zu bewegenden Objekt Zeitabhängig machst.
Beispiel :
v = s / t;
//---
var FPS: int64 = 0;