![]() |
|
||||||||||
|
|
|
|||||
|
Lorem ipsum
|
последний код располагается в someWindowController в том месте, где надо создать в окне список друзей.
а почему не mainModel... эээ... я просто насмотрелся этой схемы: http://www.flasher.ru/forum/showpost...54&postcount=2, а там модели "крепятся" к родителю, а не к корню. хотя этот момент мне не понятен в той схеме.
__________________
Поймай яблоко 2! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Никуда они не крепятся, они связаны иерархической связью и все, при создании контроллеров остаются на месте. addChild одного элемента в две разных модели сделать нельзя.
|
|
|||||
|
Lorem ipsum
|
понял.
etc, помощь была неоценимой, спасибо. пойду пробовать.
__________________
Поймай яблоко 2! |
|
|||||
|
strange mood
|
В этой теме затронут вопрос, с которым я давно не могу разобраться: как же все-таки делать иерархию mvc?
Из вышесказанного я смог выделить несколько мыслей: 1. Модель у нас одна, все слушают её и пишут в неё. 2. Иерархия модели аналогична иерархии DisplayList'а. А что с контроллерами? Тоже ветвятся? Тогда откуда взялось обращение дочерних контроллеров к родительским? Кто кому на кого передает ссылки? Блин, это настолько непонятно, что я до сих пор не могу правильно сформулировать вопрос. Допустим, есть игровое приложение, состоящее из двух больших кусков: "курилка", где можно создать игру либо присоединиться к существующей, и собственно сама игра. Document Class создает главный контроллер и передает ему ссылку на себя же в качестве контейнера, этот контроллер создает модель, затем создает вид, передавая ему модель, и добавляет в контейнер. Главная триада up and running. Теперь нужно добавить триаду, которая будет отвечать за курилку. Как это должно произойти? Как она должна быть связана с главной триадой?
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Цитата:
Добавлено через 3 минуты Цитата:
Значит где-то нет проверки на текущее значение. |
|
|||||
|
Цитата:
Цитата:
Главная модель имеет в себе ссылку на дочернюю модель (модель курилки). В главной вьюшке вложена вьюшка курилки. Контроллер главный, само собой, имеет ссылку на то что он сам создал - контроллер курилки. Когда из курилки выходят - курилка контроллер меняет курилку модель. Курилка модель в свою очередь сообщает об этом главной моделе (событием), главная модель от этого меняется. Главный контроллер, узнав о том что главная модель изменилась и говорит ему, что из курилки вышли - убивает курилку.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
strange mood
|
Спасибо, вроде прояснилось.
Еще вопрос: каким образом из дочерней триады достучаться до родительской модели? Сейчас у меня все устроено вот так: /** * Установка свойства. Если в качестве значения передать null, свойство удаляется. * @param name - имя свойства * @param value - значение */ public function setProperty(name:String, value:*){ //Запоминаем старое значение var oldValue :* = this.data[name]?this.data[name]:null; //Если новое значение такое же - ничего не делаем if(value == oldValue) return; //При получении null удаляем свойство if(oldValue && (value == null)){ //Если это дочерняя модель - отписываемся от неё if(oldValue is Model){ oldValue.removeEventListener(ModelChangeEvent.PROPERTY_CHANGE, this.dispatchEvent); }//if //Сносим delete this.data[name]; }else{ //Устанавливаем значение this.data[name] = value; //Если это дочерняя модель - подписываемся на её события if(value is Model){ value.addEventListener(ModelChangeEvent.PROPERTY_CHANGE, this.dispatchEvent); }//if }//if //Сообщаем об изменении this.dispatchEvent(new ModelChangeEvent(ModelChangeEvent.PROPERTY_CHANGE, name, oldValue, value)); }//setProperty Пока сделал ссылку на родителя просто отдельным полем.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось Psycho Tiger; 22.09.2010 в 18:00. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да, я это и предлагаю.
|
|
|||||
|
Мне не совсем понятно, откуда главный контроллер получает уведомления от дочерних. По той ссылке, что передается в конструктор?
Я делаю похоже, только у меня главная триада вбирает в себя всех детишек. Т.е. я никогда не грохаю главную модель и главную вьюшку, а событие "сменить режим игры" главный контроллер получает от главной модели, в которую это событие бабблится от дочерней.
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|