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 |
©2024 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 ©2024 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.