SDL AddTimer: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Neuerstellt)
 
K (Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.)
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= SDL_AddTimer=
 
= SDL_AddTimer=
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''SDL_AddTimer''' - Erstellt und aktiviert einen Timer
 
'''SDL_AddTimer''' - Erstellt und aktiviert einen Timer
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  function '''SDL_AddTimer'''(''interval'': UInt32; ''callback'': TSDL_NewTimerCallback; ''param'' : Pointer): PSDL_TimerID;
 
  function '''SDL_AddTimer'''(''interval'': UInt32; ''callback'': TSDL_NewTimerCallback; ''param'' : Pointer): PSDL_TimerID;
  
<br>
+
 
 +
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 18: Zeile 21:
 
|-
 
|-
 
! ''callback''  
 
! ''callback''  
| Funktion folgenden Types: <pascal>function( interval: UInt32; param: Pointer ): UInt32</pascal>
+
| Funktion folgenden Types: <source lang="pascal">function( interval: UInt32; param: Pointer ): UInt32</source>
 
|-
 
|-
 
! ''param''
 
! ''param''
Zeile 24: Zeile 27:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
Zeile 31: Zeile 35:
 
Der Rückgabewert der Funktion ist das neue Interval. Wenn dieser 0 ist, wird der Timer entfernt.
 
Der Rückgabewert der Funktion ist das neue Interval. Wenn dieser 0 ist, wird der Timer entfernt.
 
<br>
 
<br>
Die Timerfunktion kann in einem anderen Thread als das Hauptprogramm laufen. Deshalb sollte man nie auf interne Funktionen zugreifen.
+
'''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.
+
Denoch darf man [[SDL_PushEvent]] aufrufen.'''
 
 
<br>
 
  
 
== Hinweise ==
 
== Hinweise ==
Zeile 40: Zeile 42:
 
Die Genauigkeit des Timers ist Plattform abhängig. Man sollte aber 10 Millisekunden als kleinste Einheit ansehen.
 
Die Genauigkeit des Timers ist Plattform abhängig. Man sollte aber 10 Millisekunden als kleinste Einheit ansehen.
  
<br>
+
 
 +
 
  
 
== 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 ==
 +
<source lang="pascal">function timer_func(interval: Uint32; param: Pointer ): 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.</source>
  
 
== Siehe auch ==
 
== Siehe auch ==

Aktuelle Version vom 10. März 2009, 20:08 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; param: Pointer ): 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