Теоретическое занятие №3

События объектов
Цель – Рассмотреть события объектов в программе Game Maker 8. 
План лекционного занятия:
  • понятие событий;
  • основные события.
Продолжительность теоретического занятия: 1 академический час.
 
Понятие событий
Game Maker использует, так называемый, объектно-ориентированный подход. Это означает, что когда в игре что-либо случается, экземпляры объектов получают события (вроде сообщений, оповещающих о том, что случилось). Экземпляры могут среагировать на эти сообщения определенными действиями. Для каждого объекта Вы можете определить, на какие события он будет реагировать, и какие действия он должен при этом выполнять. В большинстве событий объект ничего не должен делать (если не определены действия). Для событий, где что-то должно произойти Вы можете использовать очень простой метод перетаскивания для добавления нужного действия или написать скрипт.
В середине окна со свойствами объекта Вы увидите список событий, на которые объект должен будет реагировать. Первоначально этот список пуст. Вы можете добавить событие нажатием кнопки с надписью Add Event (Добавить Событие), после чего появится окно со всеми возможными событиями. Здесь Вы выбираете событие, которое хотите добавить. Иногда показывается подменю с дополнительными вариантами. Например, для события клавиатуры Вы должны выбрать клавишу. Ниже Вам будет представлен полный список событий с описаниями. После того, как из списка будет выбрано событие, для него можно определять действия. Вы можете изменить событие, просто нажав на него. Справа в виде маленьких иконок представлены все действия. Они сгруппированы в нескольких вкладках, просто нажмите на нужной, и откроется группа. Между событиями и действиями Вы увидите список действий. Этот список содержит действия, которые будут выполняться при выбранном событии. Чтобы добавить действие в список, перетащите его курсором мыши справа непосредственно в него. Они будут располагаться друг за другом, с небольшим пояснением. Для каждого действия Вам нужно будет указать несколько параметров.
Для того чтобы удалить выбранное событие вместе со всеми действиями, нажмите кнопку Delete (Удалить). События без действий удаляются автоматически, когда Вы закрываете окно, поэтому Вам не требуется удалять их вручную. Если Вы хотите задать действия текущего события для другого, (например, Вы решили использовать другую клавишу для него) нажмите кнопку с надписью Change (Изменить) и выберите новое событие. Используя всплывающее меню при нажатии правой кнопкой мыши событии, Вы можете также сделать копию (duplicate) события, таким образом добавив новое событие с такими же действиями.
Как уже было сказано, для добавления события нажмите кнопку Add Event (Добавить Событие). Появится форма, представленная на рисунке 1, на которой Вы сможете выбрать добавляемое событие.

Рисунок 1 – «Панель событий»
Основные события
Create event (Событие создания)
Это событие происходит, когда создается экземпляр объекта. Обычно используется для придания экземпляру движения и/или для установки основных переменных.
Destroy event (Событие уничтожения)
Событие происходит, когда экземпляр уничтожается. Если точнее, оно происходит прямо перед тем, как экземпляр будет уничтожен, поэтому во время выполнения события экземпляр всё ещё существует. Используется не очень часто, однако, может быть использовано, например, чтобы изменить количество очков или для создания вместо себя другого объекта.
Alarm events (События таймера)
Для каждого экземпляра определены 12 таймеров. Вы можете изменять время этих таймеров с помощью специальных действий. Таймер течет в обратном направлении, пока не достигнет 0, и тогда происходит событие соответствующего таймера. Чтобы определить действия для каждого таймера Вы должны добавить событие соответствующего таймера. Таймеры очень полезны. Например, монстр меняет своё направление каждые 20 шагов. (В таком случае в событии таймера должно быть действие снова запускающее таймер.)
Step events (События шага)
Событие шага происходит каждый шаг. Здесь размещаются действия, которые должны происходить непрерывно. Например, если один объект должен следовать за другим, то сюда необходимо добавить действие движения за ним. Однако, не добавляйте много сложных действий в событие шага объекта с большим количеством экземпляров. Это может значительно замедлить игру. Если быть более точным, то существуют три разных события шага. Обычно Вы нуждаетесь только в одном из них. Но Вы также можете выбрать событие начала шага (Begin step) и конца шага (End step). Событие начала шага выполняется в начале каждого шага, перед всеми остальными событиями. Обычное событие шага выполняется перед тем, как экземпляры объекта будут перемещены в новые позиции. Событие конца шага выполняется в конце шага, перед событием рисования. Оно обычно используется, например, для изменения спрайта в зависимости от его текущего направления.
Collision events (События столкновения)
Когда два экземпляра сталкиваются (то есть их спрайты пересекаются) возникает событие столкновения. Возникают два события столкновения, для каждого из экземпляров. Экземпляр может реагировать на это событие. При добавлении события необходимо указать с каким объектом будет обрабатываться событие столкновения. После этого можно добавлять действия.
Есть различия в том, что происходит при столкновении экземпляра объекта с твёрдым или нетвёрдым объектом. Прежде всего, если в событии столкновения нет никаких действий, ничего не произойдет. Текущий экземпляр просто продолжит перемещаться, даже если другой объект является твёрдым. Когда же событие столкновения содержит действия, происходит следующее: если другой объект является твёрдым, экземпляр объекта перемещается в свою предыдущую позицию (перед столкновением). После этого выполняются действия события, и экземпляр перемещается в новую позицию. Так произойдет если, например, событие изменяет направление движения (рикошет экземпляра) от стены без остановки. Если столкновение всё ещё происходит, экземпляр так и остаётся на своём предыдущем месте. Таким образом, перемещение эффективно прекращается.
Когда другой объект не является твёрдым, экземпляр объекта не возвращается обратно. Событие просто выполняется с экземпляром в его текущей позиции. Также не производится повторная проверка столкновения. Поскольку объект не является твёрдым телом, мы можем просто двигаться поверх него. При этом событие будет происходить дальше.
Существует множество вариантов использования для события столкновения. Экземпляры объекта могут, например, отскакивать от стен. Вы можете использовать его, например, чтобы уничтожить экземпляр, когда в него попадает пуля и т.д.
Keyboard events (События клавиатуры)
Когда игрок нажимает клавишу, для всех экземпляров происходит событие клавиатуры. Для каждой клавиши существует отдельное событие. Сразу после выбора клавиши Вы можете добавлять действия в событие. Очевидно, что только несколько объектов нуждаются в событиях клавиатуры. Событие происходит в каждом шаге, пока игрок удерживает клавишу. Кроме этого существуют ещё два специальных события клавиатуры. Первое называется <No key>. Это событие происходит при каждом шаге, когда не нажата ни одна клавиша. Второе <Any key> происходит каждый шаг, когда нажата любая из клавиш. Если игрок нажимает сразу несколько клавиш, то события происходят для каждой из них.
Mouse events (События мыши)
Событие мыши происходит для экземпляра, когда курсор мыши находится над его спрайтом. В зависимости от нажатой кнопки происходят события: никакая кнопка не нажата, нажата левая кнопка, правая, или средняя. Событие происходит каждый шаг, пока игрок держит кнопку нажатой. События нажатия (press) происходят только в момент нажатия на кнопку. А событие отпускания (release) в момент отпускания кнопки. Эти события происходят с экземпляром, только когда курсор находится над ним. Если Вы хотите, чтобы событие происходило независимо от положения курсора, используйте глобальное событие (global) в подменю. Также есть два специальных события. Событие входа мыши (mouse enter event) происходит, когда курсор входит в область спрайта. А событие ухода мыши (leave event) происходит, когда курсор уходит из области спрайта. Событие колеса прокрутки мыши вверх (Mouse wheel up) и вниз (mouse wheel down) происходят при использовании колеса прокрутки мыши.
Other events (Другие события)
Существует несколько других событий, которые могут пригодиться в некоторых играх. Они представлены в соответствующем подменю.
Draw event (Событие рисования)
Экземпляры, если они видимы, отрисовывают свой спрайт в каждом шаге. Когда Вы определяете действия в событии рисования, спрайт рисоваться не будет, но будут выполняться эти действия. Можно это использовать, чтобы нарисовать что-то другое, вместо спрайта, или изменить какие-то параметры спрайта. Существуют действия, которые будут работать только в этом событии.
Key Press events (События нажатия клавиши)
Это событие похоже на обычное событие клавиатуры, но срабатывает только непосредственно в момент нажатия клавиши, а не постоянно.
Key Release events (События отпускания клавиши)
Это событие похоже на обычное событие клавиатуры, но срабатывает только непосредственно в момент отпускания клавиши, а не постоянно.
В некоторых ситуациях важно понимать, в каком порядке обрабатываются события в Game Maker. А обрабатываются они в следующем порядке:
Begin step events (События начала шага)
Alarm events (События таймера)
Keyboard, Key press, Key release events (События клавиатуры, нажатия и отпускания клавиши)
Mouse events (События Мыши)
Normal step events (События Шага)
(установка всех экземпляров в свои новые позиции)
Collision events (События столкновения)
End step events (События конца шага)
Drawing events (События Рисования)
События создания, уничтожения и другие события выполняются тогда, когда они происходят.

Комментарии