[Anterior]
Tabla De Contenido
[Siguiente]
Usando la API de Simple DirectMedia Layer
Eventos
Esperando eventos usando la función
SDL_WaitEvent().
|
Pista:
SDL tiene soporte de teclados internacionales, traducción
de eventos de teclado y ubicación de los equivalentes UNICODE
en event.key.keysym.unicode. Ya que esto conlleva cierta
sobrecarga de proceso, debe habilitarse usando la función
SDL_EnableUNICODE(). |
Ejemplo:
{
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
printf("¡Se pulsó la tecla %s!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
case SDL_QUIT:
exit(0);
}
}
|
Consultar eventos usando la función
SDL_PollEvent().
|
Pista:
Puedes mirar los eventos de la cola de eventos sin
necesidad de eliminarlos pasando la acción
SDL_PEEKEVENT a la función SDL_PeepEvents(). |
Ejemplo:
{
SDL_Event event;
while ( SDL_PollEvent(&event) ) {
switch (event.type) {
case SDL_MOUSEMOTION:
printf("El ratón se movió \
desde %d,%d hasta (%d,%d)\n", \
event.motion.xrel, event.motion.yrel, \
event.motion.x, event.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
printf("Botón de ratón %d pulsado \
en (%d,%d)\n",
event.button.button, event.button.x,
event.button.y);
break;
case SDL_QUIT:
exit(0);
}
}
}
|
- Consultando el estado de evento
Además de manejar los eventos directamente, cada tipo
de evento tiene una función que te permite consultar el
estado de evento de la aplicación. Si utilizas esto
exclusivamente, deberías ignorar todos los eventos de
la función SDL_EventState(), y llamar a SDL_PumpEvents()
periódicamente para actualizar el estado de evento de
la aplicación.
|
Pista:
Puedes ocultar o mostrar el cursor del ratón del sistema usando
la función SDL_ShowCursor(). |
Ejemplo:
{
SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
}
void CheckMouseHover(void)
{
int mouse_x, mouse_y;
SDL_PumpEvents();
SDL_GetMouseState(&mouse_x, &mouse_y);
if ( (mouse_x < 32) && (mouse_y < 32) )
{
printf("¡Ratón en la esquina superior \
izquierda!\n");
}
}
|
[Anterior]
Tabla De Contenido
[Siguiente]
|