SDL AddTimer: Unterschied zwischen den Versionen
Aus DGL Wiki
I0n0s (Diskussion | Beiträge) (Neuerstellt) |
DGLBot (Diskussion | Beiträge) 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= | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
'''SDL_AddTimer''' - Erstellt und aktiviert einen Timer | '''SDL_AddTimer''' - Erstellt und aktiviert einen Timer | ||
− | + | ||
+ | |||
== 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; | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
Zeile 18: | Zeile 21: | ||
|- | |- | ||
! ''callback'' | ! ''callback'' | ||
− | | Funktion folgenden Types: <pascal>function( interval: UInt32; param: Pointer ): UInt32</ | + | | Funktion folgenden Types: <source lang="pascal">function( interval: UInt32; param: Pointer ): UInt32</source> |
|- | |- | ||
! ''param'' | ! ''param'' | ||
Zeile 24: | Zeile 27: | ||
|} | |} | ||
− | + | ||
+ | |||
== 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.''' |
− | |||
− | |||
== 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. | ||
− | + | ||
+ | |||
== 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. | ||
− | < | + | |
+ | |||
+ | |||
+ | == 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, 19:08 Uhr
Inhaltsverzeichnis
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.