x = 3;
Но в большинстве случаев Вы захотите адресовать переменные в другом образце. Например, Вы захотели остановить движение всех шариков, или Вы захотели переместить основного персонажа в специфическую позицию; или в событии столкновения, Вы бы захотели установить спрайт для другого взаимодействующего образца. Это может быть достигнуто, если перед именем переменной поставить название объекта и точку. Так, например, Вы можете написать
ball.speed = 0;
Это изменит скорость всех образцов объекта шарика. Существует множество специальных объектов "objects".
other.sprite_index = sprite5; all.speed = 0; global.message = 'A good result'; global.x = ball.x;
Вы могли бы задаться вопросом, что же делает последнее присваивание, когда существует множество шариков. Что-ж - первое принимает значение x и назначает его глобальному значению.
Но если Вы хотите установить скорость одного определённого шарика, а не сразу всех шаров - сделать это немного сложнее. Каждый образец имеет уникальный идентификатор. Когда Вы помещаете образцы в редактор комнат, то данный идентификатор образца будет отображаться при наведении на образец курсора мыши. Он представляется в виде числа, которое больше или равно 100000. Это число Вы можете использовать дополнительно при размещении его слева от точки. Но будьте осторожны. Точка интерпретируется как десятичная точка в числе. Чтобы избежать путаницы, поместите по краям числа круглые скобки. Например: допустим идентификатор шарика имеет значение 100032, его Вы можете записать так:
(100032).speed = 0;
Когда Вы создаёте образец в программе, запрос возвращает идентификатор. Вот конкректная часть подпрограммы:
{
nnn = instance_create(100,100,ball);
nnn.speed = 8;
}
Она создаёт шарик и устанавливает его скорость. Обратите внимание, что мы назначили идентификатор образца как переменную и использовали эту переменную как указание перед точкой. Данное использование полностью допустимо. Позвольте попробовать сделать это более точно. Точка фактически считается оператором. Она берёт значение как левый операнд и переменную (addres) как правый операнд, и возвращает адрес этой специфической переменной в указанном объекте или образце. Все имена объекта и специальные объекты, указанные выше, просто представляют значения, и с ними можно иметь дело, как и с любым значением. Например, следующая программа является правильной:
{
obj[0] = ball;
obj[1] = flag;
obj[0].alarm[4] = 12;
obj[1].id.x = 12;
}
Последняя инструкция должна читаться следующим образом. Мы берём идентификатор первого флага. Для образца с этим идентификатором мы устанавливаем x координату на 12.
Название объекта, специальные объекты и идентификаторы образца могут также использоваться во множестве функций. Они действительно рассмотрены в программах как константы.