Доступ к членам объекта из идентификатора экземпляра

Я получаю идентификатор экземпляра объекта от collision_line()

Теперь, когда у меня есть этот экземпляр, я хочу получить его image_angle, но при попытке сделать это получаю сообщение 'unknown variable'.

Что я должен делать?


person CodeMinion    schedule 07.05.2013    source источник


Ответы (1)


каково значение этой коллизии_линии()? Функция collision_line() возвращает идентификатор экземпляра, однако, когда ничего не найдено, она возвращает noone (-4). Итак, сначала вам нужно проверить это:

var inst, imgangle;
inst = collision_line(...);
if (inst != noone) {
    imgangle = inst.image_angle;
    //etc etc
}

или, альтернативно (более чисто в GM), мы можем «злоупотреблять» оператором with. With выполняет весь последующий код с точки зрения данного идентификатора экземпляра (или для всех экземпляров определенного объекта, если задан идентификатор объекта).
Однако значение noone автоматически предотвратит любое выполнение.

var inst, imgangle;
inst = collision_line(...);
with (inst) {
    imgangle = image_angle; 
    //note that we do no longer have to put "inst." before getting a variable
    //etc etc
}
person paul23    schedule 07.05.2013
comment
ИМО, использование with() таким образом совершенно разумно, а не злоупотребление случайным поведением. Вы запускаете код на любом найденном экземпляре — если ничего не найдено, вы не запускаете код. - person Medo42; 08.05.2013
comment
Я нашел решение в то время, но спасибо, что нашли время ответить :) - person CodeMinion; 19.05.2013