Главная / Action Script 3
Пакетflash.media
Классpublic class SoundLoaderContext
НаследованиеSoundLoaderContext Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Класс SoundLoaderContext обеспечивает проверку безопасности для SWF-файлов, загружающих звук. Объекты SoundLoaderContext передаются в качестве аргументов конструктору и методу load() класса Sound.

При использовании данного класса необходимо продумать модель безопасности проигрывателя Flash Player:

Дополнительные сведения о безопасности см. в следующих ресурсах.



Общедоступные свойства
 СвойствоОпределено
  bufferTime : Number = 1000
Количество миллисекунд для предварительной загрузки потокового звука в буфер перед началом передачи звука в поток.
SoundLoaderContext
  checkPolicyFile : Boolean = false
Указывает, будет ли проигрыватель Flash Player пытаться загрузить файл политики URL-адресов с сервера загружаемого звука перед началом загрузки самого звука.
SoundLoaderContext
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
  
SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Создает новый объект Context для загрузчика звука.
SoundLoaderContext
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве
bufferTimeсвойство
public var bufferTime:Number = 1000

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Количество миллисекунд для предварительной загрузки потокового звука в буфер перед началом передачи звука в поток.

Обратите внимание, что значение SoundLoaderContext.bufferTime нельзя переопределить заданием свойства SoundMixer.bufferTime. Свойство SoundMixer.bufferTime затрагивает только время буферизации для встроенных потоковых звуков в SWF-файле и не зависит от динамически созданных объектов Sound (то есть, объектов Sound, созданных в ActionScript).

checkPolicyFileсвойство 
public var checkPolicyFile:Boolean = false

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Указывает, будет ли проигрыватель Flash Player пытаться загрузить файл политики URL-адресов с сервера загружаемого звука перед началом загрузки самого звука. Это свойство применяется к звуку, загружаемому не с того домена, в котором находится вызывающий SWF-файл, с помощью метода Sound.load().

Этому свойству необходимо задать значение true, когда звук загружается не с домена вызывающего SWF-файла и для доступа к данным звука из ActionScript требуются полномочия низкого уровня. Например, доступ низкого уровня к данным звука требуется для ссылки на свойство Sound.id3 с целью получения объекта ID3Info или для вызова метода SoundMixer.computeSpectrum() для получения образцов загруженного звука При попытке доступа к данным звука без установки значения true для параметра checkPolicyFile во время загрузки можно получить исключение SecurityError, так как требуемый файл политик не был загружен.

Если вам не требуется доступ низкого уровня к данным загружаемого звука, не устанавливайте для параметра checkPolicyFile значение true. Проверка наличия файла междоменной политики потребляет сетевую полосу пропускания и может задержать начало загрузки, поэтому ее следует выполнять только при необходимости.

При вызове метода Sound.load() со свойством SoundLoaderContext.checkPolicyFile в значении true проигрыватель Flash Player должен либо успешно загрузить соответствующий файл политики URL-адресов, либо определить, что его не существует, прежде чем начнется загрузка заданного звука. Flash Player выполняет следующие действия, чтобы проверить существования файла политики:

Во всех случаях для работы проигрывателя Flash Player требуется, чтобы на сервере звука существовал соответствующий файл политики, который предоставляет доступ к объекту по адресу URLRequest.url на основе места размещения файла политики, а также, чтобы он обеспечивал домену вызывающего SWF-файла доступ к звуку посредством одного или нескольких тегов <allow-access-from>.

Если установить для параметра checkPolicyFile значение true, то перед загрузкой звука проигрыватель Flash Player будет ожидать проверки файла политики. Прежде чем выполнять операции низкого уровня с данными звука, такие как вызов Sound.id3 или SoundMixer.computeSpectrum(), необходимо дождаться отправки событий progress и complete объектом Sound.

Если задать для параметра checkPolicyFile значение true, но при этом соответствующий файл политики не будет найден, сообщение об ошибке будет отправлено только при попытке выполнить операцию, требующую файл политики, после чего проигрыватель Flash Player выдаст исключение SecurityError. После получения события complete можно проверить, найден ли релевантный файл политики, получив значение Sound.id3 в блоке try и посмотрев, будет ли выдано исключение SecurityError.

Будьте внимательны при установке параметра checkPolicyFile, если вы загружаете файл с URL-адреса, в котором используется HTTP-переадресация на стороне сервера. Проигрыватель Flash Player пытается получить файлы политик, соответствующие свойству url объекта URLRequest, переданного методу Sound.load(). Если окончательный звуковой файл передается с другого URL-адреса из-за HTTP-переадресации, то изначально загруженные файлы политик могут быть не применимы к конечному URL-адресу объекта, который и следует учитывать при принятии мер безопасности.

В подобном случае можно предпринять следующее. Получив событие progress или complete, нужно проанализировать значение свойства Sound.url, которое содержит конечный URL звука. Затем вызовите метод Security.loadPolicyFile() в файле политики которого указан URL-адрес, полученный исходя из конечного URL звука. В завершение, запрашивайте значение свойства Sound.id3 до тех пор, пока не перестанет выдаваться исключение.

Дополнительные сведения о файлах политик см. в главе "Система безопасности проигрывателя Flash Player" руководства Программирование на ActionScript 3.0.

См. также

Сведения о конструкторе
SoundLoaderContext()Конструктор
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Создает новый объект Context для загрузчика звука.

Параметры
bufferTime:Number (default = 1000) — Число секунд для предварительной загрузки потокового звука в буфер перед началом передачи звука в поток.
 
checkPolicyFile:Boolean (default = false) — Указывает, должен проигрыватель Flash Player проверять существование файла политики 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);
        }

    }
}