21 События и обработка событий в Alice
Введение 1
События 2
Типы событий 2
Обработчики событий 2
Механизм обработки событий 2
Предлагаемые обработчики событий в Alice 3
Обработчики нажатия клавиш клавиатуры 3
Обработчики нажатия клавиш цифр на клавиатуре 3
Обработчики нажатия клавиш стрелок 4
Обработчики нажатия кнопок мыши 4
Обработчики периодических событий (таймеры) 5
Обработчики событий столкновений 5
Общее для обработчиков столкновений 5
Обработчики событий «столкновений с внешней стороны» 5
Обработчики событий столкновений с внутренней стороны 6
Введение
При работе с компьютером вы пользуетесь разными устройствами, такими как клавиатура, мышь, джойстик, USB - диск и т. д. На манипуляцию этими устройствами программы отвечают разными действиями. Например, при нажатии на клавишу «А» на экран выводится буква А, а при вводе команды «cmd” показывает окно командного процессора. Все эти действия для программы являются событиями. Их так и называют событиями. А откуда программа узнает, что произошло какое-то событие. Для этого служат так называемые СЛУШАТЕЛИ (EventListener) или, проще говоря, наблюдатели. Программа НЕ ЗНАЕТ, что делать если произойдёт то, или иное событие. Естественно, ей надо об этом рассказать путём написания отдельной программы. Такие программы называются Обработчиками событий. Как мы знаем, отдельные программы в основной программе у нас называются процедурами или функциями. Программы обработки событий тоже являются такими программами. И их текст и описание тоже пишутся в отдельном окне. При возникновении таких событий компьютер прерывает свои действия и отвечает выполнением программы Обработчика соответствующего события.
События Типы событий
Общие события сцены (управление работой основных программ) Сигнал от устр-ва ввода мышка клавиатура Сигнал о столкновении в программе объект достиг недопустимых границ, пересечение границ персонажей Обработчики событий
Перечисленные выше события могут быть оставлены без внимания или пропущены. Однако, программная среда Alice предлагает интерактивные инструменты обработки таких событий.
Механизм обработки событийВо время выполнения основной программы, Слушатель событий (EventsListeners) все время наблюдает за программой и за устройствами. Как только он получает сигнал об одном из перечисленных событий, он прерывает основную программу и выполняет процедуру обработки события. По окончании работы программы обработки события (обработчик события), выполнение основной программы продолжается с прерванного места.
Предлагаемые обработчики событий в Alice Обработчики нажатия клавиш клавиатурыaddKeyPressListener – (наблюдатели)слушатели и обработчики события нажатия клавиш клавиатуры
Пример программы обработки нажатия клавиши 0:
this addKeyPressListener
declare procedure keyPressed
If event isKey H is True then
this. ScoreText setOpacity 0.0
else
в указанном фрагменте, при нажатии на клавишу «H»(Hide) скрывается текст счёта
Обработчики нажатия клавиш цифр на клавиатуреaddNumberKeyPressListener – (наблюдатели)слушатели и обработчики события нажатия цифровых клавиш клавиатуры
numberKeyPressed
Пример программы обработки нажатия клавиши 0:
this addNumberKeyPressListener
declare procedure numberKeyPressed
If event isKey DIGIT_0 is true then
this. Camera pointAt this. MainView_CameraMarker1,duration = 0.01
this. Camera moveTo this. MainView_CameraMarker1,duration = 0.01
this. Camera pointAt this. CastleGate, duration = 0.01
this. Camera setVehicle this
else
При обработке этого фрагмента программы, а именно, при нажатии клавиши 0, камера будет показывать основной вид
Обработчики нажатия клавиш стрелокArrowKeyPressed – обработчик событий нажатия на стрелки. Заметим здесь, что нажатие клавиш «ASDW» тоже обрабатывается как нажатие стрелок.
Пример программы обработки нажатия стрелки ВВЕРХ (UP):
this addArrowKeyPressListener
declare procedure ArrowKeyPressed
If event isKey UP is true then
do together
this. Person moveForward 1.0
this. Person _Move
при нажатии стрелки ВВЕРХ (UP) персонаж будет двигаться вперед.
Обработчики нажатия кнопок мышиaddMouseClickOnObjectListener – (наблюдатели)слушатели и обработчики события нажатия кнопок мыши (Клик мыши по некоторому объекту)
getModelAtMouseLocation – узнать, по какому именно объекту кликнули мышкой.
Пример программы обработки нажатия кнопок мыши:
this addMouseClickOnObjectListener
declare procedure mouseClicked
Sthing Model = event getModelAMouseLocation
if Model == this. Bonus1 is true then
do together
this. Bonus1 turn RIGHT 1.0
this. Bonus1 Flash Anysthing: this. Bonus1
this. Bonus1 playAudio new AudioSource success_bells. mp3
В представленном фрагменте в переменной Model сохраняются сведения о том объекте, по которому щёлкнули мышкой и если это совпадает с бонусным объектом (this. Bonus1), персонаж поворачивается на 360 градусов, одновременно он мигает цветами(процедура Flash) и проигрывается звуковой ряд
Обработчики периодических событий (таймеры)TimeElapsed – периодические процессы, в независимости от действий в сцене
Пример программы обработки периодических событий:
this addTimeListener 10.0
declare procedure timeElapsed = getTimeSinceLastFire
do togrether
this. Bonus1 turn RIGHT 1.0
this. Bonus1 Flash AniSTHing: this. Bonus1
this delay 25.0
Этот фрагмент программы назначает через каждые 10 секунд полный оборот персонажа this. Bonus1, его мигание разными цветами (процедура Flash ) и задержку на 25 сек
Обработчики событий столкновений Общее для обработчиков столкновенийДля указания обработчику, какие объекты и с кем пересекаются необходимо эти объекты указать в двух массивах:
getStHingFromSetA - узнать кто пересекается getStHingFromSetB - узнать с кем пересекается. Обработчики событий «столкновений с внешней стороны»addColllisionStartListener – пересечение с внешней стороной объекта или извне ( персонаж подходит с внешней стороны объекта).
Пример программы обработки события «столкновения с объектом с внешней стороны»:
this addColllisionStartListener
declare procedure ColllisionStart
Sthing Collider = getSthingFromSetB
WholeNumber Cnumber = 0
If Collider == this. MagicStaff is true then
this. Score = this. Score + 5
this. ScoreText setValue “” + this. Score
this. Person say “ Ура! ” + this. Score
В данном фрагмнте, при столкновении персонажа с объектом this. MagicStaff, происходит увеличение счёта на 5 очков, высвечивание этого счёта на экране и радостное восклицание персонажа.
Обработчики событий «столкновений с внутренней стороны»addColllisionEndListener – пересечение изнутри (персонаж подходит изнутри к внешней границе объекта)
Обработчики событий записываются в виде отдельных процедур в отдельном разделе InitializeEventsListeners, так как они работают в независимости от основной программы


