Función SDL_AddTimer
Sintaxis
SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_TimerCallback callback, void *param);
Descripción
Invoca a una función de retrollamada en un momento del futuro.
Parámetros
- interval
- El retardo del temporizador, en milisegundos, pasado a la retrollamada.
- callback
- La función SDL_TimerCallback a invocar cuando transcurra el el interval especificado.
- param
- Un puntero que será pasado a la retrollamada.
Valor de retorno
Devuelve un ID de temporizador o 0 si se ha producido un error; llamar a SDL_GetError() para obtener más información.
Observaciones
Si utiliza esta función, se debe pasar SDL_INIT_TIMER a SDL_Init().
A la función de retrollamada se le pasa el intervalo actual del temporizador y el parámetro suministrado por el usuario desde la llamada a SDL_AddTimer() y debe devolver el siguiente intervalo del temporizador. Si el valor devuelto por la llamada de retorno es 0, el temporizador se cancela.
La retrollamada se ejecuta en un hilo separado.
Los temporizadores tienen en cuenta la cantidad de tiempo que se tardó en ejecutar la retrollamada. Por ejemplo, si la llamada de retorno tardó 250 ms en ejecutarse y devolvió 1000 (ms), el temporizador sólo esperará otros 750 ms antes de su siguiente iteración.
El tiempo puede ser inexacto debido a la programación del sistema operativo. Asegúrese de anotar el tiempo actual con SDL_GetTicks() o SDL_GetPerformanceCounter() en caso de que su llamada de retorno necesite ajustarse a las variaciones.
Ejemplo
// Función a invocar después de cierto tiempo Uint32 callback(Uint32 interval, void* name) { printf("Hola %s!\n", static_cast<char*>(name)); return 0; } ... // Inicializar el temporizador if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) < 0) ... // Ajustar el temporizador a 1 segundo SDL_TimerID timerID = SDL_AddTimer(1000, callback, const_cast<char*>("SDL")); // Main loop while(!quit) { ... } // Eliminar el temporizador después de bucle principal SDL_RemoveTimer(timerID);