Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 31.07.2022

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

SDL_EventType

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

SDL_EventType

Enumeracja typów zdarzeń, które mogą być dostarczane do aplikacji SDL.

Wartości

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

Przykładowy kod

SDL_Event e;
while (SDL_PollEvent(&e)) {
    if (e.type == SDL_KEYDOWN) {
        SDL_Log("User just pressed down a key!");
    }
}

Uwagi

SDL_QUIT

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.

Zdarzenia dla systemów Android, iOS i WinRT

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()

Powiązane struktury

Powiązane funkcje


Na początek:  podrozdziału   strony 

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: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.