[Anterior] Conteúdo
[Próxima]
Usando a API Simple DirectMedia Layer
Eventos
Espere por eventos usando a função SDL_WaitEvent().
|
Dica:
SDL tem suporte a teclado internacional, traduzindo eventos de
teclas e posicionando o equivalente UNICODE em event.key.keysym.unicode
(agora tente repetir isto 3 vezes seguidas sem parar).Já que isto
envolve processamento mais pesado, esta tradução deve ser habilitada
com SDL_EnableUNICODE().
|
Exemplo:
{
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
printf("A tecla %s foi pressionada!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
case SDL_QUIT:
exit(0);
}
}
|
Consulte eventos usando a função SDL_PollEvent().
|
Dica:
Você pode "espiar" eventos na área de eventos pendentes sem
remove-los ,passando a ação SDL_PEEKEVENT para
SDL_PeepEvents(). |
Exemplo:
{
SDL_Event event;
while ( SDL_PollEvent(&event) ) {
switch (event.type) {
case SDL_MOUSEMOTION:
printf("Mouse foi movido de %d,%d para (%d,%d)\n",
event.motion.xrel, event.motion.yrel,
event.motion.x, event.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
printf("botão %d do mouse pressionado em (%d,%d)\n",
event.button.button, event.button.x, event.button.y);
break;
case SDL_QUIT:
exit(0);
}
}
}
|
- Consultando o estado dos eventos
Alem de manipular eventos diretamente, cada tipo de evento tem
uma função que permite você checar o estado dos eventos da aplicação.Se
você usar isto exclusivamente, você deve ignorar todos
os eventos com a função SDL_EventState(), e chamar SDL_PumpEvents()
periodicamente para atualizar o estado dos eventos da aplicação.
|
Dica:
Você pode esconder ou exibir o cursor do mouse do sistema usando
SDL_ShowCursor().
|
Exemplo:
{
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("o mouse esta no canto superior esquerdo!\n");
}
}
|
[Anterior] Conteúdo
[Próxima]
|