Также возможно создание объектов в течение игрового процесса и манипулирование над ними.
НИКОГДА не изменяйте или не удаляйте объект, для которого имеются образцы. Это может провести к неожиданным эффектам, так как определённые свойства объекта сохраняются образцом и, следовательно, смена такого объекта не будет иметь желаемого эффекта.
Следующие подпрограммы полезны для создания объектов "на лету". Как и все программы изменений ресурсов - требует особой осторожности. Убедитесь, что Вы не создаёте объекты постоянно.
object_add()
Добавляет новый объект. Возвращает индекс объекта. Вы можете теперь использовать этот индекс в вышеуказанных программах, чтобы устанавливать определённые свойства объекта. Затем Вы можете использовать индекс, чтобы создавать образцы объекта.
object_delete(ind)
Удаляет объект с заданным индексом. Убедитесь, что никакие образцы объекта не существуют в любой из комнат.
object_event_add(ind,evtype,evnumb,codestr)
Чтобы задать объекту поведение, Вы должны определить событие для объекта. Вы можете добавить кодовые действия к основным событиям. Вам нужно определить объект, тип события, номер события (используйте константы, которые определены перед функцией event_perform()). Наконец Вы обеспечиваете кодовую строку, которая должна быть выполнена. Вы можете добавить многочисленные кодовые действия к каждому событию.
object_event_clear(ind,evtype,evnumb)
Вы можете использовать эту функцию, чтобы очищать все действия для конкретного события.
Создание объекта особенно полезно, когда Вы разрабатываете библиотеки сценариев или действий. Например, сценарий инициализации может создать объект, который будет отображать текст, а другой сценарий - может добавить такой объект с уже имеющимся конкретным текстом. Таким образом, у Вас имеется простой механизм для отображения текстов без необходимости того, чтобы создавать объекты, использующие стандартный интерфейс.
object_set_sprite(ind,spr)
Устанавливает спрайт объекта с заданным индексом. Используйте -1, чтобы удалить текущий спрайт из объекта.
object_set_solid(ind,solid)
Устанавливает, если образец создан из объекта, который должен по умолчанию быть твёрдым (истина или ложь).
object_set_visible(ind,vis)
Устанавливает, если образец создан из объекта, который должен по умолчанию быть видимым (истина или ложь).
object_set_depth(ind,depth)
Устанавливает глубину для объекта с индексом ind по умолчанию.
object_set_persistent(ind,pers)
Устанавливает, если образец создан из объекта, который должен по умолчанию быть постоянным (истина или ложь).
object_set_mask(ind,spr)
Устанавливает в качестве маски спрайт с индексом spr для объекта с именем ind. Использование -1, чтобы устанавливать маску, которая должна быть спрайтом объекта.
object_set_parent(ind,obj)
Устанавливает родительский объект для объекта с именем ind. Используйте -1, чтобы не иметь родительский объект с именем obj. Изменение родительских объектов изменяет поведение образцов объекта.
В игре основными представителями являются образцы различных объектов.
В течение запуска игры Вы можете изменить множество аспектов этих образцов. Также Вы можете создать новые образцы объекта и их уничтожить. Кроме перемещения, связанных с переменными, обсуждаемых выше - будет рассмотрено рисование, связанное с переменными, которые будут обсуждаться ниже. Каждый образец объекта имеет следующие переменные:
object_index
Идентификатор объекта, которому принадлежит текущий образец. Эта переменная не может быть изменена.
id
Уникальный идентификационный номер текущего образца объекта (больше 100000). При создании образцов объектов в комнатах вы можете увидеть id образца объекта, если наведёте на него курсор.)
mask_index
Идентификатор спрайта, который используется в качестве маски для столкновений для текущего образца объекта. Значение -1 устанавливается в качестве маски текущего спрайта для заданного объекта.
solid
Отражает, является ли текущий образец объекта твёрдым. Это может быть изменено в течение игры.
persistent
Отражает, является ли текущий образец объекта постоянным, и будет ли он появляться при переходе в другую комнату. Вы часто можете захотеть выключить "постоянность" в определённых моментах. (Например, когда Вы возвращаетесь в первую комнату.)Есть одна проблема при работе с образцами объекта. Идентифицировать индивидуальные образцы объекта не так уж легко. У них нет имени. Когда есть только один образец конкретного объекта, то Вы можете использовать имя объекта, но в противном случае, Вам нужно будет получить идентификатор образца. Вы можете использовать его в операторе with и как объектный идентификатор. К счастью, существует множество переменных и функций, которые помогут Вам разместить образцы объекта.
instance_count
Содержит общее количество образцов в текущей комнате.
instance_id[0..n-1]
Содержит идентификатор конкретного образца объекта. Где n является номером образца.
instance_find(obj,n)
Возвращает идентификатор образца объекта obj за номером (n+1). Если он не существует, то возвращается специальный объект noone. Отметьте, что назначение образцов к своим идентификаторам изменяется каждый шаг, так что Вы не можете использовать переменные из предшествующих шагов.
instance_exists(obj)
Возвращает (истина), если образец объекта obj существует. obj может быть объектом, идентификатором образца или всеми сразу.
instance_number(obj)
Возвращает количество образцов объекта obj. obj может быть объектом, идентификатором образца или всеми сразу.
instance_position(x,y,obj)
Возвращает идентификатор образца объекта obj, находящегося в точке (x,y). Если в указанной точке находятся несколько образцов объекта obj, то функция возвращает идентификатор первого образца. obj может быть объектом, идентификатором образца или всеми сразу. Если он не существует, то возвращается специальный объект noone.
instance_nearest(x,y,obj)
Возвращает идентификатор ближайшего к точке (x,y) образца объекта obj. obj может быть объектом, идентификатором образца или всеми сразу.
instance_furthest(x,y,obj)
Возвращает идентификатор наиболее отдалённого от точки (x,y) образца объекта obj. obj может быть объектом, идентификатором образца или всеми сразу.
instance_place(x,y,obj)
Возвращает идентификатор образца объекта obj, который встретится, если текущий образец поместить в точку с координатами (x,y). obj может быть объектом, идентификатором образца или всеми сразу. Если он не существует, то возвращается специальный объект noone.Следующие функции могут быть использованы для создания и разрушения образцов объекта. instance_create(x,y,obj) Создаёт образец объекта obj в точке, с координатами (x,y). Функция возвращает идентификатор созданного образца.
instance_copy(performevent)
Создаёт копию текущего образца. performent показывает, следует ли исполнять для полученной копии событие создания. Функция возвращает идентификатор копии образца.
instance_destroy()
Уничтожает текущий образец объекта.
instance_change(obj,perf)
Заменяет текущий образец объекта на образец объекта obj. Переменная perf показывает, выполнять ли события уничтожения и создания.
position_destroy(x,y)
Уничтожает все образцы, спрайты которых находятся в точке (x,y).
position_change(x,y,obj,perf)
Заменяет все образцы (находящиеся в точке x,y) образцами объекта obj. Переменная perf показывает, выполнять ли события уничтожения и создания.
Следующие функции предоставят Вам информацию об объекте:
object_exists(ind)
Возвращает истину, если объект с индексом ind существует.
object_get_name(ind)
Возвращает имя объекта с индексом ind.
object_get_sprite(ind)
Возвращает имя спрайта, назначенного объекта с заданным индексом ind по умолчанию.
object_get_solid(ind)
Возвращает истину, если объект с индексом ind по умолчанию твёрдый.
object_get_visible(ind)
Возвращает истину, если объект с индексом ind по умолчанию видимый.
object_get_depth(ind)
Возвращает глубину объекта с заданным индексом ind.
object_get_persistent(ind)
Возвращает истину, если объект с заданным индексом ind постоянный.
object_get_mask(ind)
Возвращает индекс маски объекта с заданным индексом ind. (-1, если не имеет специальную маску).
object_get_parent(ind)
Возвращает индекс родительского объекта объекта ind (-1, если у него нет родителя).
object_is_ancestor(ind1,ind2)
Возвращает, если объект с индексом ind2 является дочерним по отношению к объекту с индексом ind1.
|