Показать сообщение отдельно
Старый 24.10.2017, 18:26
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 11  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Нет.
Хотя поначалу тебе всегда будет хотеться сделать все задом наперед, аж на уровне подсознания.
Но "иерархия" подразумевает, что никакое _gameview.addChild(this); невозможно в принципе. Потому что это приказ родителям от ребенка. В иерархии приказывает тот, кто стоит выше. Он создает себе инструмент и управляет им. Если инструмент считает, что он знает больше, он посылает событие родителям "вас вызывают в школу". Но даже в этом случае родители сами решают, что всвязи с этим предпринять.
Нормальный код выглядит примерно так:
Код AS3:
//// MainView.as
_model.addEventListener(ModelEvent.STATE_CHANGE, handlerStateChange);
//... 
private function handlerStateChange(event:ModelEvent):void {
_stateView.show(_model.currentState);
То есть Вью получает событие от Модели "стейт изменился", забирает из модели новый стейт и отдает его СтейтВью.

Добавлено через 23 минуты
"И теперь уже прямо в StateView, не отходя от кассы, мы можем создавать объект TextField и, написав несложный метод, выводить в него тексты"

Добавлено через 36 минут
Цитата:
Я верно понимаю, что в мы передаём в экземпляр StateView ссылку на MainView, первым делом записываем её в приватную константу и "добавляемся" в неё
Давай вот сам подумай. Откуда взялся этот "экземпляр StateView"? Кто его создал? MainView? Так зачем городить огород, передавая ссылку в экземпляр, если тот кто его создал, тут же может его и добавить? У тебя вообще звучит так, словно и не MainView его создал, а кто-то где-то, и сказал куда добавиться. А ничо, что там наверно уже сотня таких добавлена, потому что про удаление таких предыдущих молодцов ты не говоришь. Это то, почему экземпляр не должен САМ себя куда-то добавлять и сам себя удалять (тут обычно холивар начинается любителями аутодафе) — тупо потому, что он не знает общей картины и даже цели своего существования, это знает только Создатель. Создатель знает, что если надо добавить новый экран, то старый надо удалить. И у него ЕСТЬ ссылка на этот старый, а у нового нет. Это только одна из миллиарда возможных ситуаций класса Конфуз.as ))
В моем примере _стейтВью один и всегда добавлен на сцену; но даже если бы это было не так, МейнВью ЗНАЛ бы, что перед созданием нового стейтВью надо удалить старый — они в его руках, он их создает и разрушает.

Добавлено через 43 минуты
Новый экземпляр нужно создавать тогда, когда необходимо сохранить старый.
Если старый не нужен, он очищается и строится заново.
"Используется повторно".
__________________
Reality.getBounds(this);