В середине окна свойств объекта находится список событий, на которые объект должен реагировать. Первоначально он пустой. Вы можете добавлять в него события, нажимая кнопку Add Event. При нажатии на данную кнопку откроется окно, в котором будут отображены все доступные типы событий. Здесь Вы выбираете событие, которое хотите добавить. При нажатии на кнопки с событиями, иногда будет открываться подменю с дополнительными опциями. Например, для события клавиатуры Вы должны выбрать клавишу. Ниже приведён полный список событий и их описание. Одно из событий в списке будет выбрано. Это то событие, которое в данный момент изменяется. Вы можете изменить выбранное событие, нажав на него. Справа находятся все доступные действия, которые представлены в виде небольших значков. Все они сгруппированы на нескольких вложенных страницах. В следующей главе описаны все действия и рассказывается о том, что они делают. Между событиями и действиями находится список действий. Этот список содержит действия для текущего события. Чтобы прибавить действие в список, нужно перетащить его при помощи мыши (кликнуть на иконке действия) и опустить на поле списка. Они будут располагаться друг за другом, и каждое из них будет иметь короткое описание. Для каждого действия Вам будет предложено определить некоторые параметры. Они также будут описаны в следующей главе. Таким образом, после добавления нескольких действий, их местонахождения будут выглядеть следующим образом:
Теперь Вы можете добавить действие в другое событие. Кликните на выбранном событии левой кнопкой мыши, чтобы выбрать его, после чего перетащите нужное действие в список.
Вы можете изменить порядок действий в списке, используя опять же перетаскивание. Если при перетаскивании удержать нажатой клавишу <Alt>, то будет создана копия действия. Вы можете использовать перетаскивание даже между списками действий для различных объектов. Когда Вы нажимаете правой кнопкой мыши на действие, появляется меню, в котором Вы можете удалить (также можно использовать клавишу <Del>), копировать или вставить действие. (Вы можете выбрать многочисленные действия для вырезания, копирования или удаления, удерживая клавишу <Shift> клавиши <Ctrl>. Нажмите <Ctrl>+<A> для выбора всех действий.) Когда Вы удерживаете курсор мыши над действием, появляется подробное его описание. Смотрите следующую главу для получения дополнительной информации о действиях.
Чтобы удалить выбранное в настоящий момент событие вместе со всеми действиями нажмите кнопку Delete. (События, не содержащие действий, будут автоматически удалены при закрытии окна, поэтому нет необходимости делать это вручную). Если Вы хотите назначить последовательность действий для другого события (например, потому, что решили использовать другую клавишу для них), нажмите кнопку Change и выберите желаемое событие. (Событие не должно быть ранее определено!) Используя всплывающее меню, при нажатии правой кнопки мыши, Вы можете дублировать событие, т.е. добавить новое событие с теми же действиями.
Для вставки события нажмите кнопку Add Event. Появится следующее окно:
Когда Вы выбираете некоторые события, то появляется дополнительное меню, из которого нужно выбрать событие, которое нужно изменить. Далее приводится описание различных событий. (Только помните, что обычно Вы используете всего несколько из них).
Create event (Событие создания)
Этот событие происходит, когда создаётся образец объекта. Обычно оно используется, чтобы определить движение образца объекта и/или для определения некоторых переменных для образца объекта.
Destroy event (Событие уничтожения)
Это событие происходит, когда образец объекта уничтожается. Если быть более точным, это происходит непосредственно перед тем, как объект будет уничтожен, следовательно, когда событие выполняется, образец объекта всё ещё существует! В большинстве случаев, данное событие не используется, но Вы можете использовать его, например, чтобы изменить игровой счёт или создать какой-то другой объект.
Alarm events (Событие сигнала-таймера)
Каждый образец объекта имеет 12 сигнальных тактов. Вы можете установить данный сигнал, синхронизируя использование некоторых действий (смотрите следующую главу). Сигнальные часы при этом тикают в обратном порядке, пока не достигнут 0. В этом такте и генерируется событие сигнала. Чтобы указать действие для данных сигнальных часов, Вы сначала должны выбрать его в меню. Сигнальные часы очень полезны. Вы можете использовать их, чтобы позволить некоторым вещам происходить время от времени. Например, монстр может изменять направление своего движения через каждые 20 шагов. (В таких случаях одно из действий в событии должно снова устанавливать сигнальные часы).
Step events (Событие шага)
Событие шага происходит каждый шаг игры. Здесь Вы можете поместить действия, которые должны выполняться непрерывно. Например, если один объект должен следовать за другим, Вы можете "приспособиться" к направлению движения объекта, за которым следуете. Хотя будьте осторожны с этим событием - не помещайте много сложных действий в событие шага объектов, которые имеют много образцов объекта. Это может значительно замедлить игру. Если быть более точным, то следует заметить, что существуют три разных события шага. Обычно Вы нуждаетесь только в одном из них - оно задается по умолчанию. Но, используя меню, Вы можете также выбрать событие начального (Begin step) и конечного (End step) шага. Событие начального шага выполняется в начале каждого шага, прежде чем будут запущены любые другие имеющиеся события. Обычное (устанавливаемое по умолчанию) событие шага выполняется непосредственно перед тем, когда образцы объекта будет помещены в новые позиции. Событие конечного шага выполняется в завершении шага, как раз перед собтием рисования. Оно обычно используется, например, для изменения спрайта в зависимости от его текущего направления.
Collision events (Событие столкновения)
Всякий раз, когда два образца объекта сталкиваются (т.е. их спрайты пересекаются), происходит событие столкновения. Говоря точнее - происходят два акта столкновения; по одному для каждого образца объекта. Образец объекта может реагировать на это событие столкновения. Установив данное событие из меню - нужно выбрать объект, с которым Вы хотите ассоциировать событие столкновения. Затем Вы помещаете туда действие.
Существует различие в происходящем столкновении образца объекта с твёрдым или нетвёрдым объектом. Прежде всего, когда в событии столкновения нет никаких действий - ничего не происходит. Текущий образец объекта просто продолжает перемещаться; даже когда другой объект является твёрдым. Когда же событие столкновения содержит действия, происходит следующее:
Когда другой объект является твёрдым - образец объекта перемещается назад в его предыдущее месторасположение (перед тем как происходит столкновение). Тогда выполняется событие, и образец объекта перемещается в новую позицию. Так происходит, например, если событие полностью изменяет направление движения - рикошет образца объекта от стены без остановки. Если столкновение всё ещё имеется, образец объекта остаётся на своём предыдущем месте. Таким образом, мы можем эффективно прекратить перемещение.
Когда другой объект не является твёрдым, образец объекта не возвращается обратно. Событие просто выполняется с образцом в его текущей позиции. Также не проводится повторная проверка столкновения. Поскольку объект не является твёрдым телом, мы можем просто двигаться поверх него. Событие уведомляет Вас, что это происходит.
Существует масса вариантов использования для события столкновения. Образцы объекта могут использовать его, чтобы отскакивать от стен. Вы можете использовать его, чтобы уничтожить объект, когда, например, в объект попадает пуля и т.д.
Keyboard events (Событие клавиатуры)
Когда игрок нажимает клавишу, происходит событие клавиатуры для всех образцов или всех объектов. Доступны различные события для каждой клавиши. В меню Вы можете выбрать клавишу, для которой хотите определить событие клавиатуры, и затем перетащить туда действие. Понятно, что только несколько объектов нуждаются в событиях клавиатуры. Вы получаете событие в каждом шаге в то время, пока игрок удерживает клавишу. Доступно два специальных события клавиатуры. Первое называется
<No key>. Это событие происходит при каждом шаге, когда не нажата никакая клавиша. Второе называется - <Any key> и происходит всякий раз, когда нажата какая-то клавиша. Между прочим, когда игрок нажимает сразу несколько управляющих кнопок, происходят события для всех нажатых клавиш. Обратите внимание, что клавиши на цифровой клавиатуре производят соответствующие событие только тогда, когда нажата клавиша <NumLock>.
Mouse events (Событие мыши)
Событие мыши происходит для образца объекта всякий раз, когда курсор мыши находится внутри спрайта, представляющего образец объекта. В зависимости от того, какая кнопка мыши нажата, Вы не получаете никакую кнопку; левую кнопку, правую кнопку или событие для средней кнопки. Событие кнопки мыши генерируется в каждом шаге, пока игрок удерживает кнопку мыши нажатой. События нажатия (Press) генерируются только однажды при нажатии кнопки. События отпускания (Release) генерируются только тогда, когда кнопка отпускается. Обратите внимание, что эти события происходят только тогда, когда мышь находится над образцом объекта. Если Вы хотите, чтобы события мыши реагировали в произвольном месте, то используйте опции глобального нажатия и глобального отпускания, вместо обычных событий. Всего есть два специальных события мыши. 1) Событие кнопки мыши генерируется тогда, когда мышь оказывается над объектом. 2) Событие кнопки мыши генерируется тогда, когда мышь покидает пределы объекта. Эти события обычно используются для изменения изображения или проигрывания некоторого звука. Наконец имеется определённое количество событий имеющих отношения к джойстику. Вы можете указать действия для четырёх основных направлений джойстика (в диагональных направлениях также применяется). Также Вы можете определить действия до восьми кнопок джойстика и использовать эту функцию, как для основного, так и для дополнительного джойстика.
Other events (Другие события)
Существует много других событий, которые могут быть полезны в некоторых играх. Их можно найти в данном меню. Здесь находятся следующие события:
Drawing event (Событие рисования)
Образцы объекта, когда они видимы, рисуют свой спрайт на экране в каждом шаге. Когда Вы определяете действия в событии рисования, спрайт не рисуется, а вместо этого выполняются указанные действия. Это может использоваться, чтобы нарисовать вместо спрайта что-то другое, или чтобы сначала сделать некоторые изменения в параметрах спрайта. Существует множество действий рисования, которые в первую очередь предназначены для использования в событии рисования. Обратите внимание, что событие рисования выполняется только тогда, когда объект является видимым. Также обратите внимание, что независимо оттого, что Вы рисуете, события столкновения привязываются к спрайту, который ассоциирован с образцом объекта.
Key press events (Событие нажатия клавиши)
Это событие подобно событию клавиатуры, но оно происходит единожды - только когда нажата клавиша, а не непрерывно. Оно будет полезно, когда Вы хотите, чтобы действие происходило только один раз.
Key release events (Событие отпускания клавиши)
Это событие подобно событию клавиатуры, но оно происходит только однажды, когда клавиша отпускается и не повторяется непрерывно.
В некоторых ситуациях важно понять порядок, в котором Game Maker обрабатывает события. Порядок следующий:
События Создания, Уничтожения и Другие события выполняются тогда, когда происходят соответствующие вещи.