Closed Ogimle closed 10 years ago
В конструкторе наследника первым делом следует вызвать конструктор супер-класса, а потом определить флаги активности и видимости:
public function myClass()
{
super();
active = visible = false;
}
Метод reset()
обновляет только положение сущности с её вложениями.
хмм.... а куда делся мой утренний ответ...
в конструкторах я всегда так делаю
а метод reset() обновляет не только положение сущности
AntEntity::586::reset()::updateChildren();
в последнем вызываются все апдейты по списку
Я нее получал уведомлений о новых постах и ничего не трогал, наверное утренний пост не отправился :)
В данный момент не очень понимаю в чем проблема? При вызове reset()
приходится вызывать все update()
чтобы получить актуальные значения объектов, например: глобальная позиция, пересчитать баундбоксы и т.п. Если этого не сделать, то метод reset()
по факту является бесполезным. Или вы ждали от него каких-то иных возможностей от него?
Или вы ждали от него каких-то иных возможностей от него?
ответ в вашем первом ответе, я ожидал от него, что он только "обновляет только положение сущности с её вложениями." (с) в смысле вызывается каскадный reset() обновляющий только положение и баундбоксы и т.п. вложенных сущностей
В данный момент не очень понимаю в чем проблема?
проблему я описал в топике постараюсь еще раз
вот как-то так....
P.s. возможно в конструкторах и не обязательно пользоваться reset() а вполне достаточно обойтись установкой x,y непосредственно, но о подводных камнях такого подхода у меня пока сведений нет, да и не хочется экспериментировать, на этом уровне можно словить эффекты похлеще, я предпочел принудительно отрабатывать заявленную движком логику своих апдейтах
Воот! Так намного понятнее что требуется. В целом согласен, займусь решением этого вопроса в ближайшие пару дней. Как будет результат, отпишусь об этом здесь. Спасибо!
ситуация:
создаем наследника AntEntity в его конструкторе делаем active = visible = false; и добавляем чилдрена add(subEntity);
если вызвать reset() для нашего класса выполнится каскадный вызов updateX() для всех его приаттаченных деток.
прецедент:
есть диалог по умолчанию невидимый и неактивный, но появляющийся по требованию в фиксированной позиции, к одному из деток диалога (фон диалога) приаттачено событие мыши onOver которое выставляет флаг что курсор над GUI, так вот после такого кода
dlg = new Dialog(); dlg.reset(10,10);
еще до появления чего либо на экране я получаю флаг активных гуев
вопрос:
мне это обходными маневрами разруливать или таки вызов апдейтов для активных деток неактивного родителя есть недочет?