A-tit indd


Очередь событий (Event Queue) —  Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet215/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   211   212   213   214   215   216   217   218   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

296
Очередь событий (Event Queue) — 
Паттерны программирования игр
Очередь событий 
(Event Queue)
«Отвязывает момент отправки сообщения или 
 события от момента его обработки».
Мотивация
Если вы не живете в горах, куда до сих пор не провели 
интернет, то, скорее всего, уже слышали про «очередь 
событий». Если нет, то, возможно, хотя бы «очередь со-
общений», «цикл событий» или «конвейер обработки со-
общений» вам о чем-то говорят. Чтобы освежить вашу 
память, пробежимся по паре вариантов фактической 
реализации данного паттерна.
Цикл событий графического интерфейса (GUI)
Если вы когда-либо писали пользовательский интер-
фейс, то вы уже знакомы с понятием 
события
. Каждый 
раз, когда пользователь взаимодействует с програм-
мой — нажимает на кнопку, разворачивает меню, нажи-
мает клавишу на клавиатуре, — операционная система 
генерирует событие. Затем она передает объект сообще-
ния программе, а ваша задача — захватить его и выпол-
нить какие-нибудь интересные действия.
Чтобы получать послания, в недрах вашей програм-
мы нужно реализовать 
цикл событий
. Тривиальный ва-
риант выглядит примерно так:
Глава 15
В большинстве случаев 
я буду использовать 
понятия «событие» 
и «сообщение» как эк-
вивалентные и взаимо-
заменяемые. Там, где 
разница будет иметь 
значения, я стану на это 
указывать.
Такой стиль построения 
приложений широко 
распространен и даже 
считается парадигмой —
событийно-управляемое 
программирование
.


Паттерны программирования игр
— Паттерны уменьшения связанности
297
while (running)
{
Event event = getNextEvent();
// 733 3…
}
Вызов метода 
getNextEvent()
отправляет необ-
работанный пользовательский ввод в ваше приложе-
ние. Вы уже перенаправляете его в обработчик собы-
тий, и словно по волшебству ваше приложение оживает. 
Самое интересное во всем этом, что приложение 
само
решает, когда 
получить
событие. Операционная систе-
ма не может немедленно перескочить в какую-то часть 
кода вашего приложения, как только пользователь ты-
кает в устройство ввода.
Когда происходит пользовательский ввод, его надо 
куда-то поместить, чтобы он не потерялся между тем, 
как событие о вводе сгенерировано, и тем, когда в при-
ложении вызван метод 
getNextEvent()
. И это «ку-
да-то» — в очередь (рис. 15.1).
Рис. 15.1.
Очередь событий, переданная от ОС приложению
Когда происходит пользовательский ввод, операци-
онная система помещает его в очередь необработанных 
событий. А когда вы вызываете метод 
getNextEvent()

он извлекает самое старое событие из очереди и переда-
ет его на обработку приложению.

Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   211   212   213   214   215   216   217   218   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish