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, так как они работают в независимости от основной программы