Пакет | flash.media |
Класс | public class SoundLoaderContext |
Наследование | SoundLoaderContext Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
класса Sound.
При использовании данного класса необходимо учесть следующую модель безопасности:
- Загрузка и воспроизведение звука запрещены, если вызывающий файл находится в изолированной программной среде сети, а звуковой файл для загрузки сохранен на локальном компьютере.
- По умолчанию загрузка и воспроизведение звука не разрешены, если вызывающий локальный файл пытается загрузить и воспроизвести удаленный звук. Чтобы разрешить это, пользователь должен предоставить явное разрешение.
- Запрещены определенные операции со звуком. Данные в загруженном звуке не могут быть получены файлом, находящимся в другом домене, если не используется файл политики URL-адресов. Данное ограничение распространяется на следующие API-интерфейсы для работы со звуком: свойство
Sound.id3
, и методыSoundMixer.computeSpectrum()
,SoundMixer.bufferTime
иSoundTransform
.
Однако в Adobe AIR эти ограничения по безопасности не распространяются на содержимое в изолированной программной среде безопасности application
(содержимое, установленное с приложением AIR).
Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.
Свойство | Определено | ||
---|---|---|---|
bufferTime : Number = 1000
Количество миллисекунд для предварительной загрузки потокового звука в буфер перед началом передачи звука в реальном времени. | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
Указывает, будет ли приложение пытаться загрузить файл политики URL-адресов с сервера загружаемого звука перед началом загрузки самого звука. | SoundLoaderContext | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object |
Метод | Определено | ||
---|---|---|---|
Создает новый объект Context для загрузчика звука. | SoundLoaderContext | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object |
bufferTime | свойство |
public var bufferTime:Number = 1000
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Количество миллисекунд для предварительной загрузки потокового звука в буфер перед началом передачи звука в реальном времени.
Обратите внимание, что значение SoundLoaderContext.bufferTime
нельзя переопределить заданием свойства SoundMixer.bufferTime
. Свойство SoundMixer.bufferTime
затрагивает только время буферизации для встроенных потоковых звуков в SWF-файле и не зависит от динамически созданных объектов Sound (то есть, объектов Sound, созданных в ActionScript).
checkPolicyFile | свойство |
public var checkPolicyFile:Boolean = false
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Указывает, будет ли приложение пытаться загрузить файл политики URL-адресов с сервера загружаемого звука перед началом загрузки самого звука. Это свойство применяется к звуку, загружаемому не с того домена, в котором находится вызывающий файл, с помощью метода Sound.load()
.
Установите для данного свойства значение true
, если вы загружаете звук, размещенный за пределами домена вызывающего файла, а для кода в вызывающем файле требуется доступ на низком уровне к звуковым данным. Например, доступ низкого уровня к данным звука требуется для ссылки на свойство Sound.id3
с целью получения объекта ID3Info или для вызова метода SoundMixer.computeSpectrum()
для получения образцов загруженного звука При попытке доступа к данным звука без установки значения true
для параметра checkPolicyFile
во время загрузки можно получить исключение SecurityError, так как требуемый файл политик не был загружен.
Если вам не требуется доступ низкого уровня к данным загружаемого звука, не устанавливайте для параметра checkPolicyFile
значение true
. Проверка наличия файла политики снижает пропускную способность сети и может задержать начало загрузки, поэтому ее следует выполнять только при необходимости.
При вызове метода Sound.load()
со свойством SoundLoaderContext.checkPolicyFile
в значении true
проигрыватель Flash Player или AIR должен либо успешно загрузить соответствующий файл политики URL-адресов, либо определить, что его не существует, прежде чем начнется загрузка заданного звука. Flash Player или AIR выполняет следующие действия в указанном порядке, чтобы проверить существование файла политики:
- Проигрыватель Flash Player или AIR анализирует ранее загруженные файлы политик.
- Проигрыватель Flash Player или AIR пытается загрузить любые ожидаемые файлы политик, указанные в вызовах метода
Security.loadPolicyFile()
. - Проигрыватель Flash Player или AIR пытается загрузить файл политики из местоположения по умолчанию, которое соответствует URL-адресу звука (файл
/crossdomain.xml
на том же сервере, что иURLRequest.url
). (URL-адрес звука задается в свойствеurl
объекта URLRequest, переданного методуSound.load()
или функции конструктора Sound().)
Во всех случаях проигрыватель Flash Player или AIR требует наличия на сервере звука соответствующего файла политики, который предоставляет доступ к звуковому файлу по адресу URLRequest.url
на основе места размещения файла политики, а также, обеспечивает домену вызывающего файла доступ к звуку посредством одного или нескольких тегов <allow-access-from>
.
Если установить для параметра checkPolicyFile
значение true
, то перед загрузкой звука проигрыватель Flash Player или AIR будет ожидать проверки файла политики. Прежде чем выполнять операции низкого уровня с данными звука, такие как вызов Sound.id3
или SoundMixer.computeSpectrum()
, необходимо дождаться отправки событий progress
и complete
объектом Sound.
Если задать для параметра checkPolicyFile
значение true
, но при этом соответствующий файл политики не будет найден, сообщение об ошибке будет отправлено только при попытке выполнить операцию, требующую наличия файла политики, после чего проигрыватель Flash Player или AIR выдаст исключение SecurityError
. После получения события complete
можно проверить, найден ли релевантный файл политики, получив значение Sound.id3
в блоке try
и посмотрев, будет ли выдано исключение SecurityError
.
Будьте внимательны при установке параметра checkPolicyFile
, если вы загружаете файл с URL-адреса, в котором используется HTTP-переадресация на стороне сервера. Проигрыватель Flash Player или AIR пытается получить файлы политик, соответствующие свойству url
объекта URLRequest, переданного методу Sound.load()
. Если окончательный звуковой файл передается с другого URL-адреса из-за HTTP-переадресации, то изначально загруженные файлы политик могут быть не применимы к конечному URL-адресу объекта, который и следует учитывать при принятии мер безопасности.
В подобном случае можно предпринять следующее. Получив событие progress
или complete
, нужно проанализировать значение свойства Sound.url
, которое содержит конечный URL звука. Затем вызовите метод Security.loadPolicyFile()
в файле политики которого указан URL-адрес, полученный исходя из конечного URL звука. В завершение запрашивайте значение свойства Sound.id3
до тех пор, пока не перестанет выдаваться исключение.
Это условие не применимо к содержимому в изолированной программной среде безопасности приложения AIR. Содержимое, находящееся в изолированной программной среде приложения, всегда имеет программный доступ к звуковому содержимому независимо от источника его происхождения.
Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.
Связанные элементы API
SoundLoaderContext | () | Конструктор |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Создает новый объект Context для загрузчика звука.
ПараметрыbufferTime:Number (default = 1000 ) — Число секунд для предварительной загрузки потокового звука в буфер перед началом передачи звука в поток.
| |
checkPolicyFile:Boolean (default = false ) — Указывает, стоит проверять наличие файла политики URL-адресов при загрузке объекта (true ) или нет.
|
Пример ( Использование этого примера )
Первый параметр объекта SoundLoaderContext (context
) используется для увеличения значения буфера по умолчанию с одной до трех секунд. (Значение выражено в миллисекундах.) Если второму параметру объекта SoundLoaderContext задать значение true
, Flash Player будет проверять наличие файла междоменной политики при загрузке объекта. В данном примере используется значение по умолчанию false
, поэтому проверка выполняться не будет. Метод load()
объекта Sound будет использовать контекстные настройки, чтобы перед началом потокового воспроизведения звук загружался в буфер в течение трех секунд. Объект URLRequest
определяет местоположение файла, подкаста от компании Adobe. Если во время загрузки звука возникает ошибка IOErrorEvent.IO_ERROR
, вызывается метод errorHandler()
.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.events.IOErrorEvent; public class SoundLoaderContextExample extends Sprite { public function SoundLoaderContextExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); var context:SoundLoaderContext = new SoundLoaderContext(3000, false); snd.load(req, context); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function errorHandler(errorEvent:IOErrorEvent):void { trace("The sound could not be loaded: " + errorEvent.text); } } }
Tue Jun 12 2018, 11:34 AM Z