With. Other.
|
|
zzzzza | Дата: Суббота, 13 Февраля 2016, 16:56 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Скорее всего глупый вопрос, но не понимаю, что не так делаю. Есть несколько объектов "obj_character". Каждый объект имеет переменную "flag". Мне надо, чтобы переменная "flag" стала равной false у всех, кроме объекта, в котором выполняется код. Тут возникла проблема: Если написать "other.flag=false", то значение этой переменной поменяется только у этого же объекта, то есть это то же самое, что написать "flag=false". Пробовал много всяких вариантов, и понял, что other работает, только если написать with (obj_character) {other.flag=false}, во всех остальных случаях other это то же самое, что и self. Ну этот вариант меня тоже не устраивает, так как сначала возьмется 1-ый объект и во всех остальных, кроме него flag будет равняться false. Потом 2-ой и произойдет то же самое(включая 1-ый). И т.д. А мне нужно, чтобы flag=false во всех, кроме того, в котором выполняется код. Думал создать глобальную переменную, в которой будет храниться id объекта, в котором код выполняется. И внутри with (obj_character) проверять на совместимость с этим id, но я думаю, что есть гораздо легче способ, либо я что-то не так делаю.
Добавлено (13 февраля 2016, 16:56) --------------------------------------------- Пока написал такой код:
Код i=0; j=instance_find(obj_button_character_class, i); while (j>0) { if (j!=id) { j.flag1=false; } i++; j=instance_find(obj_button_character_class, i); }
Но надеюсь, что кто-нибудь подскажет в чем ошибка с other.
Сообщение отредактировал zzzzza - Суббота, 13 Февраля 2016, 16:59 |
|
| |
FlyOfFly | Дата: Суббота, 13 Февраля 2016, 16:58 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| может other и работает как проверка что объекты в with не равен текущему объекту?
|
|
| |
YellowAfterlife | Дата: Суббота, 13 Февраля 2016, 16:59 | Сообщение # 3 |
Сейчас нет на сайте
| Код with (obj_button_character_class) { if (id != other.id) flag = false; // если id выбранного в цикле экземпляра не равен id выполняющего код вокруг цикла } Или даже просто
Код with (obj_button_character_class) flag = false; // снимаем флаг всем экземплярам flag = true; // ставим флаг текущему
Сообщение отредактировал YellowAfterlife - Суббота, 13 Февраля 2016, 17:00 |
|
| |
zzzzza | Дата: Суббота, 13 Февраля 2016, 17:11 | Сообщение # 4 |
участник
Сейчас нет на сайте
| YellowAfterlife, По первому способу. other.id - это что ли id объекта, в котором этот код написан? Вот как до меня не дошло сделать вторым способом, я не понимаю :( Все работает, спасибо)
Сообщение отредактировал zzzzza - Суббота, 13 Февраля 2016, 17:11 |
|
| |
YellowAfterlife | Дата: Суббота, 13 Февраля 2016, 17:35 | Сообщение # 5 |
Сейчас нет на сайте
| Цитата zzzzza ( ) YellowAfterlife, По первому способу. other.id - это что ли id объекта, в котором этот код написан? Вот как до меня не дошло сделать вторым способом, я не понимаю :( Все работает, спасибо)
Внутри цикла with, экземпляр, из которого цикл выполняется, хранится в other, а "текущий" (self) подменяется на перебираемые экземпляры. То есть
Код show_debug_message(id); // 1000001 with (some) { show_debug_message(id); // 1000002 show_debug_message(other.id); // 1000001 }
|
|
| |
zzzzza | Дата: Суббота, 13 Февраля 2016, 17:43 | Сообщение # 6 |
участник
Сейчас нет на сайте
| YellowAfterlife, Ну я так и понял. Теперь понятно почему раньше не работало. Еще раз спасибо.
|
|
| |