SDL AddTimer: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Neuerstellt)
 
()
Zeile 44: Zeile 44:
 
== Rückgabewert ==
 
== Rückgabewert ==
 
Gibt den ID-Wert des aktuellen Timers zurück oder '''nil''' wenn ein Fehler aufgetreten ist.
 
Gibt den ID-Wert des aktuellen Timers zurück oder '''nil''' wenn ein Fehler aufgetreten ist.
 +
 +
<br>
 +
 +
== Beispiel ==
 +
<pascal>function timer_func(interval:Uint32): Integer;
 +
begin
 +
  inc(times);
 +
  Write('... '); Write(interval div 1000); Writeln(' seconds later');
 +
 +
  // result value 0 will cancel timer, SDL_RemoveTimer will do the same
 +
  result := interval-1000;
 +
end;
 +
 +
begin
 +
  // Init SDL and timer
 +
  SDL_Init(SDL_INIT_TIMER);
 +
  SDL_AddTimer(3000,@timer_func,nil);
 +
  Writeln('Started');
 +
 +
  // just wait
 +
  SDL_Delay(8000);
 +
 +
  // Release
 +
  SDL_Quit;
 +
  WriteLn('ByeBye ;)');
 +
end.</pascal>
  
 
<br>
 
<br>

Version vom 19. Oktober 2005, 14:47 Uhr

SDL_AddTimer


Name

SDL_AddTimer - Erstellt und aktiviert einen Timer


Delphi-Spezifikation

function SDL_AddTimer(interval: UInt32; callback: TSDL_NewTimerCallback; param : Pointer): PSDL_TimerID;


Parameter

interval Intervall des Aufrufes in Millisekunden
callback Funktion folgenden Types:
function( interval: UInt32; param: Pointer ): UInt32
param Zeiger auf Daten auf die in der Callback-Funktion zugegriffen werden kann


Beschreibung

Fügt einen Timer hinzu, der alle interval Millisekunden die callback-Funktion aufruft.
Der Rückgabewert der Funktion ist das neue Interval. Wenn dieser 0 ist, wird der Timer entfernt.
Die Timerfunktion kann in einem anderen Thread als das Hauptprogramm laufen. Deshalb sollte man nie auf interne Funktionen zugreifen. Denoch darf man SDL_PushEvent aufrufen.


Hinweise

Um diese Funktion zu benutzen muss man es mit SDL_INIT_TIMER und SDL_Init erst initialisieren.
Die Genauigkeit des Timers ist Plattform abhängig. Man sollte aber 10 Millisekunden als kleinste Einheit ansehen.


Rückgabewert

Gibt den ID-Wert des aktuellen Timers zurück oder nil wenn ein Fehler aufgetreten ist.


Beispiel

function timer_func(interval:Uint32): Integer;
begin
  inc(times);
  Write('... '); Write(interval div 1000); Writeln(' seconds later');

  // result value 0 will cancel timer, SDL_RemoveTimer will do the same
  result := interval-1000;
end;

begin
  // Init SDL and timer
  SDL_Init(SDL_INIT_TIMER);
  SDL_AddTimer(3000,@timer_func,nil);
  Writeln('Started');

  // just wait
  SDL_Delay(8000);

  // Release
  SDL_Quit;
  WriteLn('ByeBye ;)');
end.


Siehe auch

SDL_RemoveTimer, SDL_PushEvent