![]() |
вопрос по MVC в AS3.
В самой концепции говорится что "представление" - это все что является интерфейсом: кнопки, скролы, визуальная информация, звуки и тд.
Делаю аудио плеер, собственно интересует момент в реализации отслеживания позиции проигрываемого звука) В связи с концепцией MVC само проигрывание звука необходимо производить в классе "представление" или в классе "модель"? Как мне кажется проигрывать звук должен класс "представление", а вот за параметрами проигрываемого звука (в часности позиций) должен следить класс "модели". И от изменения свойства класса "модель" должен диспатчить событие, которое "представление" должно ловить и менятся под параметр "модели" тоесть графически показывать позицию, например в текстфилде. Правильно ли рассуждаю? Зарание спасибо за коментарии :) |
|
проигрываем звука должна заниматься модель, так как звук в данном контексте моделью и является.
|
Но ещё есть такая сущность как контроллер, которая этим по идее и должна заниматься.
|
брррр стоп три поста три мнения :D
исходники ща глянем поучимся :) контролер вроде бы должен отдавать приказы модели тобишь он точно со звуком никак не связан. Тоесть в классе контролера проигрывание звука не происходит. если ошибаюсь поправьте. |
Проигрывание в модели, контроллер следит за поступающими командами из/в, представление - это кнопки и т.д. - интерфейс
|
s8000_1
спасибо за ссылку :) Как и говорили BlooDHounD и flash33 там реализовано проигрывание в модели. |
Неужто мнения flash33 и BloodHounD совпали :)
|
Лучше код приведите, чтоб понятнее было.
Вообще, в функции модели входит только получение/хранение данных. Грубо говоря, модель вернёт объект типа Sound, а контроллер вызовет метод play(). |
Поначалу так и пробовал. Правда возникла проблемма. Модель возращает объект Sound. начинаю проигрывать. и тут надо отслеживать позицию, проще всего следить за позиций в через SoundChanell. Можно и этот обьект из модели брать.
Собственно сама проблемма. Как отслеживать из модели позицию Sound. Собственно пробовал смотреть позицию в самой модели поидее и обьект один и тот же, но в модели позиция стоит, а в представлении проигрывается, как и положено. Можно конечно передать через ивент в контролер, а из контролера запомнить позицию. Но это геморой еще тот. Да и как то совсем не упрощает восприятие проги, что в принципе и должна делать MVC. |
Звук и графика - это представление. Модель хранит позицию (текущее время) проигрывания, общее время композиции, громкость, название трека. Представление - цифры нв экране, название песни, индикатор проигрывания и пр. Контроллер - регулятор громкости, след. композиция, стоп/пауза и т.д.
|
Вставлю тоже пять копеек. Все нижесказанное - мой бред. Звук есть представлние, которе генерит евенты типа сколько проигралось (композиция поможет сделать SoundView), играется оно или остановлено, слушает модель на предмет play(), stop(), position (SoundEvent.PLAY, SoundEvent.STOP, SoundEvent.CHANGE_POSITION). Контроллер: есть и он, естесственно, диктует модели такие состояния, а также из SoundView узнает её (вьюхи) состояние и сеттит модель определенным образом.
|
dimarik
Изначально так и думал. Столкнулся с проблеммой как вытянуть из Представления позицию sound. А что это вы за евенты описали ?? SoundEvent.PLAY. SoundEvent.STOP, SoundEvent.CHANGE_POSITION Это просто пользовательские? Порылся в адобовском справочнике, что то там таких нету. |
Пользовательские.
|
Господа, может перед рассуждением на эту тему стоит задать себе вопрос: А для чего вобще нужен паттерн проэктирования MVC (Model View Controller)?
Попробую ответить, поправьте если ошибаюсь. Самому интерестно стало верно ли понимаю. Первое и самое главное, это как раз разделение модели (хранение данных), представления (визуализация), и управления. Отсюда следует что: модель не должна ничего делать кроме как загружать и хранить песню или ссылку на песню Представление должно только добавлять на экран элементы плеера и управлять визуализацией касательно них. Контроллер должен обрабатывать действия пользователя и применять их к песне Для чего нужно разделение? Для того, чтобы можно было изменять поведение модели без ущерба для контроллера и представления Поведение контроллера без ущерба модели и.т.д Про инкапсуляцию данных молчу |
В общих чертах правильно. О code reuse не упомянули. И скорее изменение представлений никак не повлияет на оставшуюся парочку - контроллер и модель.
А вот изменение модели, тех её свойств, которые отслеживаются вьюхами повлечет за собой изменение последних. Представлений может быть несколько. В моем рассуждении в данном приложении представлением является зам звук (SoundView), а так же упомянутые Вами элементы плеера. Представления вполне могут "питаться" от одной модели. Цитата:
|
2 Deidara, правильно мыслите!
А вообще, жизнь гораздо разнообразнее и порой применение паттернов становиться самоцелью, что не верно. Даже в описании паттернов написано, что не надо использовать их без необходимости. Не исключено, что вашу задачу можно решить без MVC более элегантным способом, а то вон сколько копий поломали :) |
Мышление есть отражение подсознания. Сложно сочинять что то новое не имея достаточного багажа знаний :) Да и быстрее выучить уже обсосаные патерны. ИМХО.
|
Цитата:
|
2 dimarik, Я с вами полностью согласен, паттерны для этого и создавались. Но их использование должно быть осознанным, а не целью просто их использовать. MVC отличный паттерн, но только им не ограничивается весь набор решений.
|
| Часовой пояс GMT +4, время: 00:30. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.