Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Архитектура приложения (http://www.flasher.ru/forum/showthread.php?t=171019)

Kolyunya 06.11.2011 22:36

Архитектура приложения
 
Доброго всем вечера.
Написал аудио плеер, возник вопрос, насколько грамотна и эффективна его архитектура.
Ключевым элементом плеера является, разумеется, SoundChannel. Каким образом должны различные элементы плеера: плейлист (при нажатии на его элемент), панель с кнопочками (при нажатии на них) управлять звуковым каналом?

У меня есть родительский класс, от которого наследуются все элементы плеера, которые должны управлять звуком. В этом классе есть статическое свойство типа SoundChannel и несколько методов для управления им (каналом) потомками.
На сколько такой подход верен и эффективен?


П.С. Подскажите какую-нибудь хорошую литературу по "догмам" и "философии" написания в ОО стиле, а то пока - пишу по наитию...
Спасибо!

goodguy 06.11.2011 22:38

Model View Controller или просто MVC - самый распространенный шаблон. Советую почитать про него

Wolsh 06.11.2011 23:19

Цитата:

Подскажите какую-нибудь хорошую литературу по "догмам" и "философии" написания в ОО стиле, а то пока - пишу по наитию...
Классика жанра
ActionScript 3.0 - Шаблоны проектирования

Kolyunya 06.11.2011 23:33

Спасибо за литературу!
А пока я ее не прочел, может кто-нибудь прокомментировать тот принцип работы приложения, что я описал?

artcraft 06.11.2011 23:44

аудиоплеер на самом деле приложение не такого масштаба чтобы имело смысл доробить на сильно большое количество классов

пока не появится какой-нибудь нюанс, вроде необходимости менять скины

Wolsh 07.11.2011 01:43

аудиоплеер на самом деле приложение неопределенного масштаба)) Это как сказать "игра это..." Смотря какие задачи ставятся, что от плеера ожидается. Я считаю плеер гораздо более кошерной штукой для самообучения, чем стандартные попытки создать гонки на танках. Но, конечно, смотря какой плеер и какие гонки))))

crazyone 07.11.2011 02:40

SoundChannel нужно инкапсулировать и реализовать к нему доступ через интерфейс объекта. Не понял - насколько это у тебя реализовано.

Доступ к этому объекту лучше не делать через статические члены класса, а передавать ссылкой твоим управляющим элементам. Тогда у тебя приложение не будет завязано на одном классе, что даст тебе больше гибкости и возможности повторного использования кода.

Kolyunya 07.11.2011 09:32

Crazyone, у меня есть класс, от которого наследуются все "блоки" плеера. И в этом классе есть protected методы работы с private static var SoundChannel.

Просто я плохо понимаю, как иначе можно это реализовать.

Inet_PC 07.11.2011 09:39

Выбрал песню и нажал плей, вылетело:
Код AS3:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at blocks::Playlist/_pathHide()
        at blocks::Playlist/_pathHide()
        at blocks::Playlist/_pathHide()
        at blocks::Playlist/_pathHide()
        at blocks::Playlist/_trackPathHide()
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at blocks::Block/_trackPlay()
        at blocks::PlaylistButton/_eventClick()

Цитата:

но иногда появляются разные баги - обновление страницы помогает.
Да прям как винда))
И подсказки не помешали бы, я например не понимаю, что за кнопка с палочкой.
И после окончания песни вылетает этаже ошибка, назвать этот плеер работающим очень трудно.

Kolyunya 07.11.2011 09:58

Inet_PC, на локальной машине никогда не бывало никаких ошибок, а когда выложил в сеть - они вылезли. Подскажите, пожалуйста, как трейсить ошибки в браузере. Как вы увидели эту ошибку?

П.С. Кнопка с палкой - громкость :) Ее надо зажать и тащить вверх\вниз.


Часовой пояс GMT +4, время: 10:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.