|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy
Wałaszek |
©2026 mgr Jerzy Wałaszek
|
SDL_EventType
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Enumeracja typów zdarzeń, które mogą być dostarczane do aplikacji SDL.
| SDL_FIRSTEVENT | nie usuwać (nieużywany). |
| Zdarzenia aplikacji | |
| SDL_QUIT | użytkownik zażądał zamknięcia aplikacji, zobacz do Uwag. |
| Zdarzenia dla systemów Android, iOS i WinRT, zobacz do Uwag. | |
| SDL_APP_TERMINATING | system operacyjny zamyka aplikację. |
| SDL_APP_LOWMEMORY | w systemie jest mało pamięci, zwolnij jej nieco. |
| SDL_APP_WILLENTERBACKGROUND | aplikacja jest przenoszona do tła. |
| SDL_APP_DIDENTERBACKGROUND | aplikacja znalazła się w tle. |
| SDL_APP_WILLENTERFOREGROUND | aplikacja jest przenoszona na pierwszy plan. |
| SDL_APP_DIDENTERFOREGROUND | aplikacja znalazła się na pierwszym planie. |
| Zdarzenia okienkowe | |
| SDL_WINDOWEVENT | zmiana stanu okna. |
| SDL_SYSWMEVENT | zdarzenie specyficzne dla systemu. |
| Zdarzenia klawiaturowe | |
| SDL_KEYDOWN | naciśnięty klawisz. |
| SDL_KEYUP | zwolniony klawisz. |
| SDL_TEXTEDITING | edycja tekstu z klawiatury (kompozycja znaku). |
| SDL_TEXTINPUT | wprowadzanie tekstu z klawiatury. |
| SDL_KEYMAPCHANGED | zmiana przydziału klawiszy z powodu zdarzenia systemowego takiego jak zmiana języka wprowadzania tekstu lub zmiana układu klawiatury (>= SDL 2.0.4). |
| Zdarzenia myszki | |
| SDL_MOUSEMOTION | ruch myszką. |
| SDL_MOUSEBUTTONDOWN | naciśnięty przycisk myszki. |
| SDL_MOUSEBUTTONUP | zwolniony przycisk myszki. |
| SDL_MOUSEWHEEL | ruch kółkiem myszki. |
| Zdarzenia joysticka | |
| SDL_JOYAXISMOTION | ruch osi joysticka. |
| SDL_JOYBALLMOTION | ruch manipulatora kulkowego w joysticku. |
| SDL_JOYHATMOTION | zmiana pozycji grzybka w joysticku. |
| SDL_JOYBUTTONDOWN | naciśnięcie przycisku joysticka. |
| SDL_JOYBUTTONUP | zwolnienie przycisku joysticka. |
| SDL_JOYDEVICEADDED | podłączenie joysticka. |
| SDL_JOYDEVICEREMOVED | odłączenie joysticka. |
| Zdarzenia kontrolera | |
| SDL_CONTROLLERAXISMOTION | ruch osi kontrolera. |
| SDL_CONTROLLERBUTTONDOWN | naciśnięcie przycisku kontrolera. |
| SDL_CONTROLLERBUTTONUP | zwolnienie przycisku kontrolera. |
| SDL_CONTROLLERDEVICEADDED | podłączenie kontrolera. |
| SDL_CONTROLLERDEVICEREMOVED | odłączenie kontrolera. |
| SDL_CONTROLLERDEVICEREMAPPED | uaktualnienie konfiguracji kontrolera. |
| Zdarzenia dotyku | |
| SDL_FINGERDOWN | użytkownik dotknął urządzenia wejściowego. |
| SDL_FINGERUP | użytkownik przestał dotykać urządzenia wejściowego. |
| SDL_FINGERMOTION | użytkownik przesuwa palcem po urządzeniu wejściowym. |
| Gesture events | |
| SDL_DOLLARGESTURE | |
| SDL_DOLLARRECORD | |
| SDL_MULTIGESTURE | |
| Zdarzenia schowka | |
|
SDL_CLIPBOARDUPDATE |
zawartość schowka została zmieniona. |
| Zdarzenia przeciągania i upuszczania | |
| SDL_DROPFILE | system żąda otwarcia pliku. |
| SDL_DROPTEXT | zdarzenie przeciągania/upuszczania tekstu. |
| SDL_DROPBEGIN | rozpoczęcie przeciągania (>= SDL 2.0.5). |
| SDL_DROPCOMPLETE | zakończenie przeciągania (>= SDL 2.0.5). |
| Zdarzenia podłączania urządzeń dźwiękowych | |
| SDL_AUDIODEVICEADDED | dostępne nowe urządzenie dźwiękowe (>= SDL 2.0.4). |
| SDL_AUDIODEVICEREMOVED | usunięte urządzenie dźwiękowe (>= SDL 2.0.4). |
| Zdarzenia grafiki | |
| SDL_RENDER_TARGETS_RESET | powierzchnia docelowa została zresetowana i jej zawartość wymaga uaktualnienia (>= SDL 2.0.2). |
| SDL_RENDER_DEVICE_RESET | kontekst graficzny został zresetowwany i wszystkie jego tekstury wymagają ponownego utworzenia (>= SDL 2.0.4). |
| Te zdarzenia są do twojego użytku i powinny być przydzielane za pomocą SDL_RegisterEvents() | |
| SDL_USEREVENT | zdarzenie określone przez użytkownika |
| SDL_LASTEVENT | tylko do scalania wewnętrznych tablic |
SDL_Event e;
while (SDL_PollEvent(&e)) {
if (e.type == SDL_KEYDOWN) {
SDL_Log("User just pressed down a key!");
}
}
|
Zdarzenia SDL_QUIT są generowane z różnych powodów. Przykładowo aplikacja może zignorować to zdarzenie, jeśli chce wyświetlić okienko proszące użytkownika, aby najpierw zachował na dysku efekty swojej pracy.
Zdarzenie SDL_QUIT jest generowane, gdy użytkownik zamknie ostatnie istniejące okno. Dzieje się to dodatkowo ze zdarzeniem SDL_WINDOWEVENT/SDL_WINDOWEVENT_CLOSE, więc aplikacja może sobie sprawdzić, czy jedno z nich jest odpowiednie, czy oba, czy żadne. Jeśli aplikacja zignoruje to zdarzenie i utworzy następne okno, SDL_QUIT zostanie wysłane ponownie następnym razem, gdy użytkownik zamknie ostatnie okno.
SDL_QUIT nie ogranicza się do zamykania okna. W systemie Mac OS X naciśnięcie kombinacji klawiszy Command-Q (standardowy skrót klawiaturowy dla "Quit this application" – "Zamknij tę aplikację") wymusi na SDL generację zdarzenia SDL_QUIT bez względu na to, czy posiada ona w tym czasie jakiekolwiek okna. Jednakże aplikacja wciąż jest odpowiedzialna za właściwe zakończenie się. Aplikacje ignorujące klawisze Command-Q nie otrzymają certyfikatu Mac App Store.
W systemach POSIX SDL_Init() instaluje sterowniki sygnałów dla SIGINT (przerwanie klawiaturowe) i SIGTERM (systemowe żądanie zakończenia się), jeśli takie sterowniki już nie istnieją, a one wygenerują również przerwania SDL_QUIT. Nie ma sposobu określenia przyczyny przertwania SDL_QUIT, lecz utworzenie sterownika sygnałów w twojej aplikacji przechwyci standardową generację zdarzeń zamykających dla tego sygnału.
To, co obecnie nazywamy "zdarzeniami dla systemów Android, iOS i WinRT" są to zdarzenia specyficzne dla urządzeń mobilnych i osadzonych, które posiadają inne wymagania, niż twoje zwykłe aplikacje pulpitowe. Zdarzenia te muszą być obsługiwane w pewnego rodzaju filtrze zdarzeń, ponieważ zwykle dany system operacyjny potrzebuje natychmiastowej odpowiedzi i zamknie twój proces wkrótce po wysłaniu takiego zdarzenia, a jeśli pozostanie ono w kolejce zdarzeń SDL, to będzie już za późno. Wszostko inne możesz obsługiwać przez normalną pętlę SDL_PollEvent() loop, lecz dla tych specyficznych zdarzeń powinieneś stworzyć funkcję wywoływaną zwrotnie za pomocą SDL_SetEventFilter().
Oto jak te zdarzenia są odwzorowywane w docelowym systemie operacyjnym:
|
Zdarzenie SDL |
Co się dzieje? |
iOS |
Android |
WinRT |
| SDL_APP_TERMINATING | System operacyjny zamyka aplikację. | applicationWillTerminate() | onDestroy() | Exiting() |
| SDL_APP_LOWMEMORY | Aplikacja ma za mało pamięci, zwolnij jej nieco. | applicationDidReceiveMemoryWarning() | onLowMemory() | -- |
| SDL_APP_WILLENTERBACKGROUND | Aplikacja zostanie przeniesiona do tła. | applicationWillResignActive() | onPause() | Suspending() |
| SDL_APP_DIDENTERBACKGROUND | Aplikacja jest w tle i może nie być stale obsługiwana przez procesor. | applicationDidEnterBackground() | onPause() | Suspending() |
| SDL_APP_WILLENTERFOREGROUND | Aplikacja zostanie przeniesiona na pierwszy plan. | applicationWillEnterForeground() | onResume() | Resuming() |
| SDL_APP_DIDENTERFOREGROUND | Aplikacja jest teraz interaktywna. | applicationDidBecomeActive() | onResume() | Resuming() |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.