|
[Předchozí]
Obsah [Další]
Použití Simple DirectMedia Layer API
Události
Čekání na události pomocí funkce
SDL_WaitEvent().
|
Tip:
SDL podporuje národní rozložení kláves tak, že události z klávesnice
překládá do UNICODE ekvivalentů v event.key.keysym.unicode.
Protože je to spojeno se zvýšeným nárokem
na zpracování, musí se tato funkce povolit pomocí
SDL_EnableUNICODE(). |
Příklad:
{
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
printf("Byla stisknuta klávesa %s!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
case SDL_QUIT:
exit(0);
}
}
|
Vyzvednutí událostí pomocí funkce
SDL_PollEvent().
|
Tip:
Záznamy v řadě událostí si můžete prohlédnout bez
jejich odstranění předáním parametru akce SDL_PEEKEVENT funkci
SDL_PeepEvents(). |
Příklad:
{
SDL_Event event;
while ( SDL_PollEvent(&event) ) {
switch (event.type) {
case SDL_MOUSEMOTION:
printf("Myš se pohnula o %d,%d na (%d,%d)\n",
event.motion.xrel, event.motion.yrel,
event.motion.x, event.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
printf("Tlačítko myši %d stisknuto na (%d,%d)\n",
event.button.button, event.button.x, event.button.y);
break;
case SDL_QUIT:
exit(0);
}
}
}
|
- Vyzvedávání stavu události
Mimo možnost správy událostí přímo má každý typ
události funkci, která aplikaci umožňuje kontrolovat
její stav. Pokud používáte výhradně tuto možnost,
měli byste zapnout ignoraci všech událostí pomocí funkce
SDL_EventState() a pro update stavu události aplikace
pravidelně volat SDL_PumpEvents().
|
Tip:
Kurzor myši můžete skrýt nebo zobrazit pomocí
SDL_ShowCursor(). |
Příklad:
{
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("Myš je v levém horním rohu!\n");
}
}
|
[Předchozí]
Obsah [Další]
|