#include "SDL.h"
SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param);
/* "新"的計時器回調函數的類型定義 */ typedef Uint32 (*SDL_NewTimerCallback)(Uint32 interval, void *param);
增加一個計時器,它會在經過所指定的毫秒數後調用一個回調函數。回調函數接受當前計時器的時間間隔以及SDL_AddTimer所要調用的參數,並返回下一計時器時間間隔。若回調函數的返回值跟所傳遞的時間間隔值一樣,則定期的警報會繼續,否則會安排新的警報。
可以通過以SDL_AddTimer所返回的計時器ID作為參數調用SDL_RemoveTimer來退出當前運行的計時器。
計時器回調函數可以在不同于主程序的線程中運行。因此,不應該在它之內調用任何函數。然而,你總是可以調用SDL_PushEvent。
計時器的粒度依賴于平台,但你應當以至少10毫秒為單位計。因為這是最為普遍的數值。這意味著,在一個未加載的系統,如果你請求一個16毫秒的計時器,你的回調函數將會返回大約20毫秒。如果你想設置一個每秒30幀(每33毫秒)的更新標志,你應當設置一個30毫秒的計時器(參見以下的例子)。如果你要使用這個函數,你得將SDL_INIT_TIMER傳遞給SDL_Init。
my_timer_id = SDL_AddTimer((33/10)*10, my_callbackfunc, my_callback_param);
2010年6月22日