Форум 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=172706)

TanaTiX 15.12.2011 16:52

Загрузка звуков
 
Прошу помощи в разрешении спора.
Есть некий условный проект, который грузит в себя различные ресурсы, в т.ч. и звуки. Все загружаемые звуки должны проигрываться после того, как будут загружены по мере требования.
Собственно вопрос: каким образом лучше/правильнее грузить звуки - отдельным менеджером загрузок или звуковым менеджером (используя Sound.load)?
Заранее спасибо.

Genzo 15.12.2011 17:12

Если в приложении будет много звуков (>2 одновременно может воспроизводиться), я бы сделал SoundManager, который отвечал бы за загрузку и воспроизведение оных. И воспроизводил бы все звуки, через 1 единственный Sound, через SampleDataEvent

cleptoman 15.12.2011 19:02

я бы звуки напихал в отдельную свф, грузил и дергал готовые саунды на базе звуковых файлов.

TanaTiX 16.12.2011 01:18

cleptoman, не подойдет, т.к. в других проектах такое может быть не приемлемым, а код необходимо использовать повторно.
Genzo, я вот считал, что загрузкой контента должен заниматься один класс/модуль, а воспроизведением другой. В отношении звуков допускаю что возможны загрузка и воспроизведение в одном классе/модуле в случае, когда нет необходимости дожидаться окончания загрузки файла для его воспроизведения.
Если я не прав, то в чем?

Genzo 16.12.2011 11:01

Цитата:

Сообщение от TanaTiX (Сообщение 1051801)
Genzo, я вот считал, что загрузкой контента должен заниматься один класс/модуль, а воспроизведением другой. В отношении звуков допускаю что возможны загрузка и воспроизведение в одном классе/модуле в случае, когда нет необходимости дожидаться окончания загрузки файла для его воспроизведения.
Если я не прав, то в чем?

В принципе вы правы, т.к. частную логику загрузки нельзя мешать с логикой воспроизведения, ни кто не знает точно каким образом вы будете загружать файлы и т.п., может вы вообще их по сокетам передавать будете. В таком случае думаю хороша такая схема :
Цитата:

FileLoader : URLLoader || Socket || Loader || URLStream -> IDataManager
IDataManager : [
SoundManager,
VideoManager,
PictureManager,
TextManager
]
И такая иерархия :
Цитата:

Application -> SoundManager.getSound("fightSound_sword") -> FileLoader.request(FileLoader.SOUND "fightSound_sword" , "audio/mpeg") -> URLLoader.load();
В FileLoader может вставить механизм кеширования и т.п. вещей, а в IDataManager передавать уже загруженные данные и оперировать ими.

TanaTiX 16.12.2011 20:17

Genzo, спасибо за мнение. Я себе примерно так и представлял (2й вариант). Жаль только что мало альтернативных мнений. А то спор спором, но делать по уму хочется. Может в своем плане действий чего не доглядел/не учел...

dimarik 17.12.2011 00:13

Цитата:

Сообщение от TanaTiX (Сообщение 1051801)
Genzo, я вот считал, что загрузкой контента должен заниматься один класс/модуль, а воспроизведением другой. В отношении звуков допускаю что возможны загрузка и воспроизведение в одном классе/модуле в случае, когда нет необходимости дожидаться окончания загрузки файла для его воспроизведения.
Если я не прав, то в чем?

Очень дельная мысль по поводу потокового/эвент контента. Первыми были гифки. Пока грузились остальные кадры, можно было смотреть первый. А по мере загрузки можно было показывать очередной. Моя мысль проста. Должна быть единственная точка запроса контента — загрузчик, инкапсулирующий разные способы получения любого контента. Воспроизведение — задача вьюх (представлений).

fish_r 17.12.2011 01:13

Цитата:

Сообщение от dimarik (Сообщение 1052040)
Очень дельная мысль по поводу потокового/эвент контента. Первыми были гифки. Пока грузились остальные кадры, можно было смотреть первый. А по мере загрузки можно было показывать очередной. Моя мысль проста. Должна быть единственная точка запроса контента — загрузчик, инкапсулирующий разные способы получения любого контента. Воспроизведение — задача вьюх (представлений).

Вроде бы правильно, конечно. Но с другой стороны: если лоадер является ДО, то почему бы его не закинуть на сцену? И пусть грузит себе, если ему нужно, и по задаче от этого ДО ничего больше не требуется. Если Sound и загрузчик и звук, то почему это не использовать децентрализовано по отношению к приложению?
В чём вред, или скрытые грабли? Просто не по феншую?

TanaTiX 17.12.2011 15:00

fish_r, т.е. закинуть и будь что будет? Ни контроля, ни управления? А если таких объектов штук ..дцать? Тогда ко всему прочему мы дублируем функционал загрузки контента в каждом экземпляре класса, вместо того, чтоб поручить это одному классу/модулю, который будет управлять (помимо всего прочего) и количеством активных загрузок.

Вот кстати интересно (если говорить о звуках), если нет необходимости для начала воспроизведения дожидаться окончания загрузки, как лучше поступить в этом случае? Наверное все равно не оставлять все на волю случая и контролировать загрузчиком, если (что-то не нравится мне это "если") таких объектов гарантированно небольшое количество.

Ну и было бы интересно узнать кто как поступает на реальных проектах.


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

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