![]() |
fish_r, ты действительно не сказал ничего, что оспаривал бы Dukobpa3. Особенно легко в этом убедиться, прочитав пропущенный тобой комментарий прямо над твоим возражением.
Вы об одном и том же разными словами :) |
Я его и не пропустил. Мы обсуждали другую частность:
Цитата:
|
Ясно. И как это
Цитата:
Цитата:
А вот это действительно лишнее: Цитата:
|
Цитата:
Хорошо. Предположим вы делаете не игру, а польз. интерфейс заносите ли вы координаты кнопок в модель? |
Цитата:
Цитата:
|
@Zebestov - Спасибо, наверное))) Мои слова поняты верно и с первого раза, плюс за поддержку.
@fish_r - Слушай что тебе старшие говорят ;-Р |
Интересует взаимосвязь модели с вью. Вьюшка не может изменять модель. Но у нее есть ссылка на модель, соответственно... сами понимаете что. Акцессоры здесь не подходят, так как контроллер должен изменять те же свойства, которые читает вью. В отдельный пакет вьюшку тоже не закинешь. Понятно, я не собираюсь в представлении как-то менять модель :). Но интересно на будущее, просто чтобы уж "совсем правильно", как здесь быть?
Если создать событийный класс для событий модели (имею в виду "пользовательское событие" по К.Муку). В этот класс при диспатче из модели передавать все доступные параметры для вьюшки. Это будет правильно? Добавлено через 2 минуты Или лучше создать несколько таких событийных классов, погрупировав в них лишь те свойства, которые непосредственно будут нужны при поимке этого события в представлении? |
Цитата:
|
Цитата:
Цитата:
Цитата:
Т.е. получается модель продиспатчила - меня изменили. Вью полезла посмотрела нужные данные и всё. Добавлено через 3 минуты Цитата:
Например большая изокарта. События в модели могут быть разные. Поменялся статус в каком-то домике, просто надо в нем показать хинт, или же поменялась позиция домика, тогда нужно отсортировать элементы. Вот эти два изменения лучше как-то разделить чтоб вьюха понимала какой рендер запускать. Добавлено через 8 минут Цитата:
|
Цитата:
Цитата:
Код AS3:
Что же, будем делать "правильно". Спасибо :) Добавлено через 8 минут Цитата:
|
Код AS3:
И это в итоге может разрастись на пачку всего остального. К тому же если юнита активировали то подсветится те клетки куда можно пройти, а юнит не может ходить по камням к примеру. Так вот в каждом таком событии передавать всю карту нецелесообразно, нужно чтоб вью сама полезла в модель и прочитала параметры карты и потом нарисовала подсвеченные клетки. |
Цитата:
|
Цитата:
Но, вероятно мы должны сказать спасибо вашим родителям за ваше воспитание. |
Никогда не оценивал возраст по годам, сорри.
|
Цитата:
каких либо действий. Т.е. если один изменил местоположение кнопки, то и у других оно должно изменится. Являются ли в этом случае координаты кнопки частью модели? Добавлено через 1 минуту Цитата:
|
Цитата:
Да, тогда координаты или какое-то представление координат должно быть в модели (возможно даже не двумерное, а линейное "что за чем в каком порядке"). Добавлено через 58 секунд Цитата:
Изначально про возраст как бы шутка была. Но если уж так серьезно то так. |
Вадим не отписался, предположу, что он и в этом, вашем ответе с вами солидарен.
Так вот: Цитата:
Таким образом мы и получаем правильное взаимодействие элементов: вью интерпретирует данные модели, контроллер интерпретирует данные вью - получаем обособленность, независимость модели от представления (но не обратную, что MVC и не предусматривает). И, вот что... устал я что то от этого, с вашего позволения закроем прения по этому вопросу. "Имеющий уши да услышит, имеющий глаза да увидит..." |
Ни к чему ведь прения.
Вы опять же привели один из частных случаев. Одни и те же шахматы можно сделать как с сохранением истории - тогда ключевым моментом будет порядок действий. А можно хранить только текущее состояние. Тогда достаточно будет только координат фигур на доске. Оба варианта имеют место быть и на определенном уровне абстракции абсолютно идентичны. |
Прение - это спор. В этом нет ничего страшного )
Ну, ладно. А почему именно координаты вам нужно сохранять (про шахматы)? Можно ведь сохранить в двухмерном массиве вида x\y, где каждый эл-т это клетка шах. поля. Так нельзя сделать? Конечно, в случае с юнитами всё может быть намного сложнее, но MVC и не гарантирует простоты, он гарантирует лишь одно - независимость представления от логики. |
Цитата:
Касательно шахмат зачем мне целый двумерный массив из 64-х клеток если я обойдусь одномерным массив на 32 значения. Экономия на спичках, в данном конкретном случае, но всё же. И даже если это будет не 8х8, а некое произвольное поле то вьюхе будет достаочно узнать размерность(два значения) и опять же один одномерный массив юнитов. И разговор наш начинался с карты и юнитов. Тут абсолютно та же ситуация - координаты минимальное чем можно обойтись для воссоздания текущей ситуации. А вот например есть игра Торибаш. Физика трехмерная, две регдольных куклы файтинги устраивают. Так вот тут нужен именно порядок действий с самого начала боя, так как тут играет роль физика, и очень влияет на исход боя не только текущее положение, а еще и инерция которую мы получили в предыдущих ходах. Еще может быть какая-то стратегия, чтоб риплеи сохранять и прочее. Ну так ведь это уже другая задача совершенно. К ней и подход другой. Да и тут можно кучу вариантов найти. Либо порядок действий каждого пользователя, либо же набор "скриншотов" модели. |
Цитата:
Цитата:
что если вам понадобится в 50 раз больше усилий приложить, будьте добры приложите их. Иначе не "крестите" свою конструкцию MVC, только и всего. Цитата:
писать приложение уже не осталось? Это единственный возможный вариант строения приложения? Да, наплюйте, как наплевали на это больше половины (наверняка) игроделов. Да. Реализация этой парадигмы может привести к значительному усложнению приложения, росту нагрузки, замедлению быстродействия и пр. Ещё раз - MVC не решает эти проблемы, она решает совершенно другое, так, что взвесьте, подумайте нужно ли вам в очередном приложении такая реализация? Может дешевле будет переделать логику когда потребуется переделывать отображение? Если вообще потребуется. Но если вы ставите логику в зависимость характеристик отображения, то это не MVC. |
Цитата:
Логика от этого не страдает абсолютно, равно как и парадигма МВЦ, а идти заведомо каким-то сложным путем, если можно проще, смысла не вижу никакого. И вы мне покажите хоть один источник информации в котором указано каким именно образом должны записываться данные в модель? Формулы какие-то? Правила? Их нету. |
Цитата:
|
Цитата:
|
Я в базовый класс модели вставляю сылку статическую на основную(серверную) модель.
|
А что такое "прототипы" в этом контексте?
|
Цитата:
|
Ага, спасибо. Только что такое "ленивый геттер" ? :rolleyes:
А еще вот в swiz, была такая фишка, всё что попадает на сцену проижектывается автоматом. С этой фичей мы избавляемся от маппинга, но за то приобретаем плюся ДИ. Может быть такую систему можно заюзать для того что бы дочерние модели получали то что нужно? |
Цитата:
Код AS3:
Код AS3:
|
Зачем this._user = null?
Код AS3:
|
1 - Понял, спасибо.
2 - А почему бы просто не слушать DataBaseEvent.ADDED? |
И еще. Можно вышестоящим родителем сеттить user, если он у него есть, конечно. Т.е. не обращаться к родителю, а он все сам сделает. Аха, да, это инжект и есть.
|
Цитата:
|
Цитата:
Добавлено через 55 секунд Цитата:
Добавлено через 1 минуту Цитата:
Добавлено через 2 минуты Цитата:
|
Хм, разве это дорогостоящая операция?
|
Цитата:
|
if (!this._user...
this._user = null; Он вроде и так null; |
@dimarik, не обязательно.
@etc, ок спасибо. |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +4, время: 02:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.