![]() |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Добавлено через 8 минут Цитата:
http://upload.wikimedia.org/wikipedi...iagram.svg.png Совершенно точно у View есть ссылка на модель. У модели нет конкретной ссылки на представление. Ссылка на уровне приложения конечно есть, но она лишь на уровне подписчика на изменения, поэтому и выполнена пунктиром. Выполнять обязанности прокси контроллеру незачем, потому как для множества вьюверов писать множество прокси-методов — бессмысленное нагромождение ненужного кода в контроллере. А если у вас будет ещё и иерархическая модель, то количество таких ненужных проксей для каждого элемента модели вырастет в геометрической прогрессии. Добавлено через 10 минут Цитата:
Цитата:
|
в model-и есть set-метод и get-метод.
Как сделать, что бы view НЕ мог работать с set-методом, но мог работать с get-методом? И при этом открыть доступ к обоим методам controller-у? |
Цитата:
|
признаюсь: не знаю что такое IModel.
==================================================== Цитата:
|
IModel интерфейс, который имплементит Model.
Всем большое спасибо, особенно etc, уже понимаю суть. Ещё 2 вопроса: etc, а что нужно ещё поменять в той реализации что я дал, чтобы это ещё больше стало похоже на то, как написал бы ты? В голову лезет только добавление интерфейсов, и то что во втором вопросе. Собственно второй вопрос: а есть ли какие то общие-базовые-классы для модели, вьюшки и контроллера? Тот же pureMVC - честно не понимаю, как MVC можно обернуть в фреймворк - наверняка там цепочка наследования controller -> controller base class -> object (или этих звеньев до object больше) и назревает вопрос - а какой функционал туда можно выносить? Голова не позволяет выделить что то общее, помимо сохранение ссылки на модель или вьюшку - но новый класс ради 2 строчек... как то бредово. |
Цитата:
Цитата:
|
Цитата:
Код AS3:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Суть понял, однако древовидные модели применять пока не буду - не представляется в данный момент нужным.
Спасибо большое, теперь я разобрался. Наверное, в усвоении сейчас поможет только практика. Ещё раз огромное спасибо) |
Цитата:
============================================= Если кому не лень, напишите в коде как это будет выглядеть.:rolleyes: |
Код AS3:
|
А ещё часто пишут, что модель занимается бизнес-логикой.
Вот пример — видеоплеер. Заканчивается проигрывание видюшки, модель диспатчит соотв. событие. Кому лучше дальше принять решение проигрывать ли следующее/случайное видео из списка или остановится? На основании какого-нибудь mediaPlayer.config.repeatMode и mediaPlayer.config.shuffle ? |
Цитата:
|
Цитата:
|
Кстати, вот сейчас интересный вопрос постиг:
Делаю игру, она 2.5д-шная, позиционирование объектов идёт как в 3д, но объекты являются уже отрисованными картинками и они просто поворачиваются нужным кадром к зрителю, создавая эффект 3д (короче, поворот на 360 кадрами мувиклипа, и крутим как будто бы в 3д). Странное чувство, но я уже даже не представляю, как это можно сделать без MVC... он чертовски заразный :D Дак вопрос в чем - камера следует всегда за игроком и её можно крутить (только в одном направлении, конечно, иначе пререндер не имел бы смысла). В движке я переопределил методы поворота камеры с изменением модели PlayerModel (как никак это камера от игрока, поэтому туда засунуть считаю допустимым) и её же передаю другим объектам, которые должны крутится (чтобы они знали, когда нужно повернуться и куда). Это допустимо с точки зрения MVC, передавать не свою модель? |
Если вид зависит от PlayerModel - то это его модель тоже. Вообще разделение на "своя" - "не своя" условно. Но на вашем месте я бы вынес данные о камере в Model.cameraData - для более читабельного кода. тогда CharacterView [i] следит за Model.characterData[i] и за Model.cameraData, что вполне логично.
Тут, кстати, пригодилась бы древовидная реализация модели с всплывающими событиями.. |
Цитата:
|
Цитата:
Цитата:
И да, у меня только один большой MVC, отвечающий за игрока и камеру, мелкие объекты вроде партиклов вообще идут одни классом, посложнее - а ля такие же юниты, как игроки - связкой V + MC. Может быть, это идиологически неправильно, но я руководствовался здравым смыслом. |
При работе с партиклями, да и вообще с большим количеством объектов ( при z-сортировке например) mvc тоже не применяю - очень накладно. Лучше контроллером явно менять параметры видов.
Древовиная модель: в твоем примере имеем что-то вроде: Код AS3:
Код AS3:
|
А зачем событиям всплывать?
|
Цитата:
Вообще, под древовидной моделью я имел в виду не просто ссылки у родителя, а именно список детей и методы, схожие с методами DisplayObjectContainer. |
Цитата:
Я к тому что если есть подписка, например Код AS3:
Код AS3:
Цитата:
|
Цитата:
Код AS3:
|
Да, это я понял, я немного о другом спрашиваю.
Ну вот отталкиваясь от примера, что ты мне написал: Код AS3:
Код AS3:
|
Чтобы обеспечить зеркальность структуры вьюверов и модели.
|
Хм..
То есть примерно для таких нужд? Код AS3:
|
Нет, имеется ввиду, что, например, вместе с событием REMOVED элемента модели удалится и вьювер, отображающий данный элемент. К примеру, в обычном List.
|
Ааа, и удалив модель земного шара мы удалим одним махом и модели всех землян вместе с вьюшками. Теперь стало понятно, спасибо )
|
Нет, я имел ввиду удаление одного землянина с земли одновременно с удалением оного из базы данных.
|
Цитата:
У меня тоже древовидная структуру, только в отличии от etc - я не делал аналог DisplayObject с addChild и.т.п. У меня просто в конструкторе модели - передаётся ссылка на парент (которую, в принципе можно и сменить потом, но мне пока ни разу не понадобилось.) Код AS3:
пример : слушаем смерть землянина: в контроллере Код AS3:
|
currentTarget? Ты уверен? :)
|
Цитата:
|
Цитата:
Код AS3:
И вот тут: Код AS3:
|
тут у меня "не очень" ООП-ный код используется..
ModelEvent имеет свойство field:* Цитата:
Код AS3:
|
Угу, мне вот второй способ кажется логичней. Лучше спросить кому надо, чем знать это всем.
А вот это зачем? Для какой цели? Код AS3:
|
это регистрация для автоматического удаления всех листенеров
|
Понял. Спасибо за разъяснения.
|
Цитата:
Добавлено через 5 минут Цитата:
Добавлено через 11 минут Цитата:
Добавлено через 18 минут Цитата:
Я уж молчу о нововведении "addUpdateFieldListener". Чем EventDispatcher не угодил? Не следует множить сущее без необходимости. |
| Часовой пояс GMT +4, время: 03:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.