Пакет | flash.media |
Класс | public final class SoundMixer |
Наследование | SoundMixer ![]() |
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Свойство | Определено | ||
---|---|---|---|
bufferTime : int [статические]
Число секунд для предварительной загрузки внедренного потокового звука в буфер перед началом передачи звука в поток. | SoundMixer | ||
![]() | constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | |
![]() | prototype : Object [статические]
Ссылка на модель объекта класса или функции. | Object | |
soundTransform : SoundTransform [статические]
Объект SoundTransform, управляющий глобальными свойствами звука. | SoundMixer |
Метод | Определено | ||
---|---|---|---|
[статические]
Определяет, являются ли какие-либо звуки недоступными из-за ограничений безопасности. | SoundMixer | ||
[статические]
Создает снимок текущей звуковой волны и помещает его в заданный объект ByteArray. | SoundMixer | ||
![]() |
Показывает, определено ли заданное свойство для объекта. | Object | |
![]() |
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | |
![]() |
Показывает наличие заданного свойства и его перечисляемость. | Object | |
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
[статические]
Останавливает воспроизведение всех звуков, воспроизводимых в данный момент. | SoundMixer | ||
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object |
bufferTime | свойство |
bufferTime:int
[чтение и запись] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Число секунд для предварительной загрузки внедренного потокового звука в буфер перед началом передачи звука в поток. Данные в загруженном звуке, включая время буферизации, не могут быть получены SWF-файлом, находящимся в другом домене, если не используется файл политики URL-адресов. Дополнительные сведения о безопасности и звуке см. в описании класса Sound.
Свойство SoundMixer.bufferTime
затрагивает только время буферизации для встроенных потоковых звуков в SWF-файле и не зависит от динамически созданных объектов Sound (то есть, объектов Sound, созданных в ActionScript). Значение свойства SoundMixer.bufferTime
не может переопределять или задавать значение по умолчанию для времени буферизации, заданного объектом SoundLoaderContext, который передан методу Sound.load()
.
public static function get bufferTime():int
public function set bufferTime(value:int):void
См. также
soundTransform | свойство |
soundTransform:SoundTransform
[чтение и запись] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Объект SoundTransform, управляющий глобальными свойствами звука. Объект SoundTransform включает свойства для настройки громкости, панорамы, назначения левого и правого динамиков. Объект SoundTransform затрагивает только звуки, встроенные в SWF-файл. Объект SoundTransform, использованный в данном свойстве, передает окончательные параметры звука, которые применяются ко всем звукам после задания отдельных параметров звука.
public static function get soundTransform():SoundTransform
public function set soundTransform(value:SoundTransform):void
См. также
areSoundsInaccessible | () | метод |
public static function areSoundsInaccessible():Boolean
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Определяет, являются ли какие-либо звуки недоступными из-за ограничений безопасности. Например, звук, загруженный не с того же домена, на котором находится SWF-файл, будет недоступен, если на его сервере нет файла политики URL-адресов, предоставляющего доступ к домену SWF-файла. Звук будет загружен и воспроизведен, но для недоступных звуков не выполняются операции более низкого уровня, такие как получение метаданных ID3 для звука.
ВозвращаетBoolean — Строковое представление логического значения.
|
См. также
computeSpectrum | () | метод |
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Создает снимок текущей звуковой волны и помещает его в заданный объект ByteArray. Значения форматируются как нормализованные значения с плавающей запятой в диапазоне от -1 до 1. Объект ByteArray, передаваемый параметру outputArray
, перезаписывается и получает новые значения. Размер созданного объекта ByteArray фиксируется на 512 значениях с плавающей запятой, где первые 256 значения представляют левый канал, а вторые 256 значений — правый.
Примечание. Этот метод учитывает ограничения безопасности для локального файла и для междоменной загрузки. При работе с локальными SWF-файлами или звуками, загруженными с сервера, находящегося не в том же домене, что вызывающий SWF-файл, возможно, потребуется создать файл политики URL-адресов, чтобы преодолеть ограничения изолированной программной среды. Дополнительные сведения см. в описании класса Sound.
Этот метод поддерживается через RTMP в Flash Player 9.0.115.0 и более поздних версий. Можно контролировать потоки на сервере Flash Media Server в сценарии, выполняемом на стороне сервера. Дополнительные сведения см. в разделах о свойствах Client.audioSampleAccess
и Client.videoSampleAccess
в документе Ссылка на языке ActionScript на стороне сервера для Adobe Flash Media Server.
Параметры
outputArray:ByteArray — Объект ByteArray, содержащий значения, связанные со звуком. Если какие-то звуки недоступны вследствие ограничений безопасности (areSoundsInaccessible == true ), объект outputArray остается без изменений. Если выключены все звуки, объект outputArray заполняется нулями.
| |
FFTMode:Boolean (default = false ) — Логическое значение, указывающее на то, подвергается ли звук сначала преобразованию Фурье. Если этому параметру задать значение true , вместо необработанной звуковой волны метод возвращает спектр частот. В спектре низкие частоты представлены слева, а высокие — справа.
| |
stretchFactor:int (default = 0 ) — Разрешение звуковых образцов. Если задать для stretchFactor значение 0, образцы создаются с использованием частоты 44,1 кГц, при значении 1 используется частота 22,05 кГц, при значении 2 используется частота 11, 025 кГц и т.д.
|
См. также
computeSpectrum()
используется для создания графического представления данных звуковой волны.
Конструктор загружает и запускает звуковой файл. (В данном примере ошибки не обрабатываются, и предполагается, что звуковой файл находится в том же каталоге, что и SWF-файл.) При воспроизведении звука прослушивается событие Event.ENTER_FRAME
, в результате чего многократно вызывается метод onEnterFrame()
для рисования графика значений звуковых данных. После завершения воспроизведения звука метод onPlaybackComplete()
останавливает рисование, удалив прослушиватель события Event.ENTER_FRAME
.
В методе onEnterFrame()
метод computeSpectrum()
сохраняет необработанный звук в объекте массива байт bytes
. Образец создается с использованием частоты 44,1 кГц. Массив байт, содержащий 512 байт данных, каждый из которых содержит значение с плавающей запятой от -1 до 1. Первые 256 значений представляют левый канал, а вторые 256 значений — правый. Первый цикл for считывает первые 256 значений (левый стереоканал) и рисует линию от одной точки к другой с помощью метода Graphics.lineTo()
. (Векторное графическое представление звуковой волны записывается непосредственно на объекте Sprite класса.) Байты звука считываются как 32-разрядное число с плавающей запятой из потока байт и умножаются на высоту графика, чтобы получить вертикальный диапазон кривой. Ширина равна удвоенной ширине длины канала. Второй цикл for считывает следующие 256 значений (правый стереоканал) и строит кривую в обратном порядке. Методы g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
и g.lineTo(0, PLOT_HEIGHT);
рисуют основную линию для графиков волн. Полученная кривая волны похожа на зеркальное отражение первой.
package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; import flash.utils.ByteArray; import flash.text.TextField; public class SoundMixer_computeSpectrumExample extends Sprite { public function SoundMixer_computeSpectrumExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("Song1.mp3"); snd.load(req); var channel:SoundChannel; channel = snd.play(); addEventListener(Event.ENTER_FRAME, onEnterFrame); channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); } private function onEnterFrame(event:Event):void { var bytes:ByteArray = new ByteArray(); const PLOT_HEIGHT:int = 200; const CHANNEL_LENGTH:int = 256; SoundMixer.computeSpectrum(bytes, false, 0); var g:Graphics = this.graphics; g.clear(); g.lineStyle(0, 0x6600CC); g.beginFill(0x6600CC); g.moveTo(0, PLOT_HEIGHT); var n:Number = 0; for (var i:int = 0; i < CHANNEL_LENGTH; i++) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); g.endFill(); g.lineStyle(0, 0xCC0066); g.beginFill(0xCC0066, 0.5); g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); for (i = CHANNEL_LENGTH; i > 0; i--) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(0, PLOT_HEIGHT); g.endFill(); } private function onPlaybackComplete(event:Event):void { removeEventListener(Event.ENTER_FRAME, onEnterFrame); } } }
stopAll | () | метод |
public static function stopAll():void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Останавливает воспроизведение всех звуков, воспроизводимых в данный момент.
При использовании данного свойства необходимо продумать модель безопасности проигрывателя Flash Player.
SoundMixer.stopAll()
прекращает воспроизведение только тех звуков, которые находятся в той же изолированной программной среде безопасности, что и вызывающий его объект. Все звуки, воспроизведение которых было начато из другой изолированной программной среды, продолжают воспроизводиться.load()
класса Sound можно задать параметр context
, представленный объектом SoundLoaderContext. Если задать свойству checkPolicyFile
объекта SoundLoaderContext значение true
, проигрыватель Flash Player проверяет наличие файла политики URL-адресов на сервере, с которого загружается звук. Если на сервере есть файл политики URL-адресов, который разрешает домен SWF-файла, тогда файл может остановить загруженный звук с помощью метода SoundMixer.stopAll()
; если же нет, то это сделать нельзя.Дополнительные сведения см. в следующих источниках.
stopAll()
используется для отключения двух звуков, воспроизводимых одновременно.
В конструкторе загружаются и запускаются два разных звуковых файла. Первый звук загружается локально и назначается звуковому каналу. (Предполагается, что файл находится в том же каталоге, что и SWF-файл.) Второй файл загружается и передается в виде потока с сайта Adobe. Для использования метода SoundMixer.stopAll()
должны быть доступными все звуки. (Для проверки файла междоменной политики может использоваться объект SoundLoaderContext.) Для каждого звука настроен прослушиватель событий, который вызывается в случае возникновения ошибки ввода/вывода при загрузке звукового файла. Также создается текстовое поле muteButton
. Оно прослушивает щелчки мыши, при которых вызывается метод muteButtonClickHandler()
.
Если в методе muteButtonClickHandler()
текстовое поле содержит "ВЫКЛ", то метод areSoundsInaccessible()
проверяет, имеет ли микшер доступ к файлам. Если файлы доступны, метод stopAll()
выключает звуки. При повторном щелчке по текстовому полю возобновляется воспроизведение первого звука, а в текстовом поле снова отображается "ВЫКЛ". На этот раз метод stopAll()
выключает один воспроизводимый звук. Обратите внимание, что метод stop()
звукового канала также можно использовать для выключения определенного звука, назначенного каналу. (Для функционального использования канала звук необходимо повторно назначать каналу при каждом вызове метода play()
.)
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.events.IOErrorEvent; public class SoundMixer_stopAllExample extends Sprite { private var firstSound:Sound = new Sound(); private var secondSound:Sound = new Sound(); private var muteButton:TextField = new TextField(); private var channel1:SoundChannel = new SoundChannel(); public function SoundMixer_stopAllExample() { firstSound.load(new URLRequest("mySound.mp3")); secondSound.load(new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3")); firstSound.addEventListener(IOErrorEvent.IO_ERROR, firstSoundErrorHandler); secondSound.addEventListener(IOErrorEvent.IO_ERROR, secondSoundErrorHandler); channel1 = firstSound.play(); secondSound.play(); muteButton.autoSize = TextFieldAutoSize.LEFT; muteButton.border = true; muteButton.background = true; muteButton.text = "MUTE"; muteButton.addEventListener(MouseEvent.CLICK, muteButtonClickHandler); this.addChild(muteButton); } private function muteButtonClickHandler(event:MouseEvent):void { if(muteButton.text == "MUTE") { if(SoundMixer.areSoundsInaccessible() == false) { SoundMixer.stopAll(); muteButton.text = "click to play only one of sound."; } else { muteButton.text = "The sounds are not accessible."; } } else { firstSound.play(); muteButton.text = "MUTE"; } } private function firstSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } private function secondSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }