Пятница, 29 Марта 2024, 05:27

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » With. Other.
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, Ну я так и понял. Теперь понятно почему раньше не работало. Еще раз спасибо.
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » With. Other.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг