90. Sound Part3. Загрузка звука из внешнего файла (.mp3)

junior – серия статей для начинающих ActionScript-разработчиков.
Все статьи серии:
http://flashpress.ru/blog/category/junior/
Серия статей на тему использования звука(Sound) в приложениях ActionScript:
  1. Sound Part1. Создаем кнопку со звуком в Adobe Flash
  2. Sound Part2. Программное воспроизведение звука
  3. Sound Part3. Загрузка звука из внешнего файла (.mp3)
  4. Sound Part4. Трансформация звука. SoundTransform и SoundMixer
  5. Sound Part5. Программная генерация звука на лету (скоро)

В предыдущей статье Sound Part2. Программное воспроизведение звука мы научились получать звук из библиотеки Adobe Flash. Если вам необходимо загрузить звук из отдельного файла, во время выполнения приложения, или например если вы пишите приложение Радио на языке ActionScript – этот урок для вас. Мы научимся загружать звуковые файлы с помощью метода load класса Sound, разберем для чего нужен класс SoundLoaderContext и некоторые нюансы, связанные с политикой безопасности загрузки внешних звуковых файлов.

Загрузка звука

И так, в самом простом случае, загрузить звуковой файл можно с помощью кода:

FlashBuilderFlashIDE
Код для редактора Adobe FlashBuilder
Код для редактора Adobe Flash CS Professional

Вы можете так же загрузить звуковой файл методом load, т.е. не обязательно передавать ссылку в конструкторе класса Sound:

FlashBuilderFlashIDE
Код для редактора Adobe FlashBuilder
Код для редактора Adobe Flash CS Professional

Узнать о процессе загрузки в ActionScript можно из событий ProgressEvent.PROGRESS и Event.COMPLETE. Первое отправляется когда идет процесс загрузки файла, а второе в момент когда звуковой файл загружен целиком:

FlashBuilderFlashIDE
Код для редактора Adobe FlashBuilder
Код для редактора Adobe Flash CS Professional

Буферизация

Обратите внимание, что метод play расположен сразу после метода загрузки load, это ни в коем случае не означает что звук сразу начнет проигрываться. Воспроизведение начнется после того, как будет заполнен буфер , т.е. после того, как будут загружены определенное количество секунд звукового файла. По умолчанию буфер равен одной секунде. Что бы изменить это значение, воспользуйтесь классом SoundLoaderContext, который принимает в конструкторе первым параметром значение буфера в миллисекундах. В следующем примере звук начнется проигрываться после того, как будут загружены первые 5 секунд:

FlashBuilderFlashIDE
Код для редактора Adobe FlashBuilder
Код для редактора Adobe Flash CS Professional

Буфер имеет еще одно значение в коде ActionScript. Например если использовать предыдущий код с буфером 5 секунд, и если скорость загрузки слабая, то в момент когда буфер заканчивается, флешка притормаживает процесс воспроизведения до тех пор пока буфер не будет заполнен вновь. У объекта класса Sound есть свойство isBuffering:Booelan, которое вернет значение true в том случае, если воспроизведение звука приостановлено, и флешка в данный момент пытается заполнить буфер.

Политика безопасности

Если ваше приложение и ваш звуковой файл находятся в разных доменах – что бы загрузить звуковой файл, вам необходимо позаботиться о политике безопасности ActionScript приложения. Дело в том, что флешь по умолчанию не разрешает загружать какие бы то ни было файлы с другого домена, в том числе и звуковые. Что бы разрешить Flash-плееру загружать файлы(звуковые в т.ч.) с другого домена, вам необходимо в домен, где лежит загружаемый файл, положить файл crossdomain.xml(подробнее об этом файле расскажу в отдельной статье в ближайшее время), и при загрузке звука, указать в конструкторе класса SoundLoaderContext вторым параметром значение true:

, или использовать параметр checkPolicyFile:

В этом случае, перед тем как загрузить звуковой файл, флешь плеер попытается загрузить файл crossdomain.xml из корневого каталога домена, где лежит загружаемый файл. Т.е. если ваше flash-приложение лежит по адресу http://domen-a.ru/flash/app.swf, а звуковой файл лежит здесь: http://domen-b.ru/sounds/sound1.mp3, то флешка app.swf попытается загрузить файл политики по адресу http://domen-b.ru/crossdomain.xml.

Если же у вас приложение и загружаемые звуки лежат в одном домене, нет смысла использовать параметр checkPolicyFile, потому что это может привести к задержке загрузки звукового файла

.

Серия статей на тему использования звука(Sound) в приложениях ActionScript:
  1. Sound Part1. Создаем кнопку со звуком в Adobe Flash
  2. Sound Part2. Программное воспроизведение звука
  3. Sound Part3. Загрузка звука из внешнего файла (.mp3)
  4. Sound Part4. Трансформация звука. SoundTransform и SoundMixer
  5. Sound Part5. Программная генерация звука на лету (скоро)

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 2035 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress: