Пакет | flash.media |
Класс | public final class SoundMixer |
Наследование | SoundMixer Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
).
Свойство | Определено | ||
---|---|---|---|
audioPlaybackMode : String [статические]
Указывает режим воспроизведения аудио для всех объектов Sound. | SoundMixer | ||
bufferTime : int [статические]
Число секунд для предварительной загрузки внедренного потокового звука в буфер перед началом передачи звука в поток. | SoundMixer | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
soundTransform : flash.media:SoundTransform [статические]
Объект SoundTransform, управляющий глобальными свойствами звука. | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [статические]
Включает или выключает громкоговоритель, когда устройство находится в режиме голосовой связи. | SoundMixer |
Метод | Определено | ||
---|---|---|---|
[статические]
Определяет, являются ли какие-либо звуки недоступными из-за ограничений безопасности. | SoundMixer | ||
[статические]
Создает снимок текущей звуковой волны и помещает его в заданный объект ByteArray. | SoundMixer | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
[статические]
Останавливает воспроизведение всех звуков, воспроизводимых в данный момент. | SoundMixer | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object |
audioPlaybackMode | свойство |
audioPlaybackMode:String
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 3 |
Указывает режим воспроизведения аудио для всех объектов Sound. На мобильных устройствах это свойство задает приоритеты звука и значения по умолчанию в соответствии с идиомами платформы. В компьютерных системах и средах телевизионных устройств режимы воспроизведения звука не имеют функциональных различий.
Действительные значения для этого свойства определены в классе AudioPlaybackMode.
Примечание. Если в ОС iOS одно приложение задает audioPlaybackMode=AudioPlaybackMode.VOICE
, другие приложения не могут изменить его на AudioPlaybackMode.MEDIA
.
Используйте режим AudioPlaybackMode.VOICE
в течение минимально допустимого времени и после окончания голосового вызова попытайтесь переключиться в режим AudioPlaybackMode.MEDIA
, как только это будет возможно, чтобы позволить другим программам воспроизведение в режиме мультимедиа.
При изменении режима воспроизведения аудиозаписей в ОС iOS работа встроенных приложений, воспроизводящих музыку, ненадолго приостанавливается.
Значением по умолчанию является AudioPlaybackMode.MEDIA.
Реализация
public static function get audioPlaybackMode():String
public static function set audioPlaybackMode(value:String):void
Выдает
ArgumentError — kInvalidParameterError
|
Связанные элементы API
bufferTime | свойство |
bufferTime:int
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Число секунд для предварительной загрузки внедренного потокового звука в буфер перед началом передачи звука в поток. Данные в загруженном звуке, включая время буферизации, не могут быть получены SWF-файлом, находящимся в другом домене, если не используется файл междоменной политики. Дополнительные сведения о безопасности и звуке см. в описании класса Sound. Данные в загруженном звуке, включая время буферизации, не могут быть получены кодом файла, находящегося в другом домене, если не используется файл междоменной политики. Однако код в изолированной программной среде приложения AIR имеет доступ к данным звуковых файлов, полученных из любого источника. Дополнительные сведения о безопасности и звуке см. в описании класса Sound.
Свойство SoundMixer.bufferTime
затрагивает только время буферизации для встроенных потоковых звуков в SWF-файле и не зависит от динамически созданных объектов Sound (т.е. объектов Sound, созданных в ActionScript). Значение свойства SoundMixer.bufferTime
не может переопределять или задавать значение по умолчанию для времени буферизации, заданного объектом SoundLoaderContext, который передан методу Sound.load()
.
Реализация
public static function get bufferTime():int
public static function set bufferTime(value:int):void
Связанные элементы API
soundTransform | свойство |
soundTransform:flash.media:SoundTransform
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Объект SoundTransform, управляющий глобальными свойствами звука. Объект SoundTransform включает свойства для настройки громкости, панорамы, назначения левого и правого динамиков. Объект SoundTransform, использованный в данном свойстве, передает окончательные параметры звука, которые применяются ко всем звукам после задания отдельных параметров звука.
Реализация
public static function get soundTransform():flash.media:SoundTransform
public static function set soundTransform(value:flash.media:SoundTransform):void
Связанные элементы API
useSpeakerphoneForVoice | свойство |
useSpeakerphoneForVoice:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 3 |
Включает или выключает громкоговоритель, когда устройство находится в режиме голосовой связи. По умолчанию на смартфонах для вывода аудио используется гарнитура, если значение SoundMixer.audioPlaybackMode
равно AudioPlaybackMode.VOICE
. Свойство useSpeakerphoneForVoice
позволяет переопределить вывод по умолчанию, чтобы можно было реализовать кнопку громкоговорителя в приложении телефона. Это свойство не действует в режимах, отличных от AudioPlaybackMode.VOICE
. В компьютерных системах и средах телевизионных устройств это свойство не работает.
Примечание Если в ОС iOS приложение задает audioPlaybackMode=VOICE
, а другое приложение также воспроизводит содержимое в голосовом режиме, задать useSpeakerphoneForVoice=true
невозможно.
Примечание. На платформе Android необходимо задать android.permission.MODIFY_AUDIO_SETTINGS
в дескрипторе приложения AIR, или изменение этого значения не будет иметь эффекта. Кроме того, настройка является глобальной настройкой устройства. Другие приложения, выполняющиеся на устройстве, могут изменять настройку базового устройства в любое время.
Значением по умолчанию является false.
Реализация
public static function get useSpeakerphoneForVoice():Boolean
public static function set useSpeakerphoneForVoice(value:Boolean):void
Связанные элементы API
areSoundsInaccessible | () | метод |
public static function areSoundsInaccessible():Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Определяет, являются ли какие-либо звуки недоступными из-за ограничений безопасности. Например, звук, загруженный не с того же домена, в котором находится вызывающее этот метод содержимое, будет недоступен, если на его сервере нет файла политики URL-адресов, предоставляющего доступ к домену этого содержимого. Звук будет загружен и воспроизведен, но для недоступных звуков не выполняются операции более низкого уровня, такие как получение метаданных ID3 для звука.
В отношении содержимого приложений AIR, находящегося в изолированной программной среде безопасности приложения, вызов этого метода всегда возвращает значение false
. Все звуки, включая те, что загружены с других доменов, доступны для содержимого в изолированной программной среде безопасности приложения.
Boolean — Строковое представление логического значения.
|
Связанные элементы API
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 значений — правый.
Примечание. Этот метод учитывает ограничения безопасности для локального файла и для междоменной загрузки. При работе с локальными файлами или звуками, загруженными с сервера, находящегося не в том же домене, что и вызывающее содержимое, возможно, потребуется создать файл междоменной политики, чтобы преодолеть ограничения изолированной программной среды. Дополнительные сведения см. в описании класса Sound. Более того, этот метод нельзя использовать для извлечения данных из потоков RTMP, даже если он вызывается содержимым, находящимся в том же домене, что и сервер RTMP.
Этот метод поддерживается через протокол RTMP в Flash Player 9.0.115.0 и более поздних версиях и в Adobe AIR. Можно контролировать потоки на сервере 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 кГц и т.д.
|
Связанные элементы API
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
Пример ( Использование этого примера )
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 Lite 4 |
Останавливает воспроизведение всех звуков, воспроизводимых в данный момент.
> Во Flash Professional этот метод не останавливает воспроизведение. Звуки, настроенные для потоковой передачи, снова будут воспроизводиться по мере перехода точки воспроизведения к кадрам, в которых они находятся.
При использовании данного свойства необходимо учесть следующую модель безопасности:
- По умолчанию вызов метода
SoundMixer.stopAll()
прекращает воспроизведение только тех звуков, которые находятся в той же изолированной программной среде безопасности, что и вызывающий его объект. Все звуки, воспроизведение которых было начато из другой изолированной программной среды, продолжают воспроизводиться. - При загрузке звука с помощью метода
load()
класса Sound можно задать параметрcontext
, представленный объектом SoundLoaderContext. Если задать свойствуcheckPolicyFile
объекта SoundLoaderContext значениеtrue
, проигрыватель Flash Player или Adobe AIR проверяет наличие файла междоменной политики на сервере, с которого загружается звук. Если на сервере есть файл междоменной политики, который допускает домен вызывающего содержимого, то файл может остановить загруженный звук с помощью методаSoundMixer.stopAll()
; если же нет, то этого сделать нельзя.
Однако в Adobe AIR эти ограничения по безопасности не распространяются на содержимое в изолированной программной среде безопасности application
(содержимое, установленное с приложением AIR).
Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.
Пример ( Использование этого примера )
stopAll()
используется для отключения двух звуков, воспроизводимых одновременно.
В конструкторе загружаются и запускаются два разных звуковых файла. Первый звук загружается локально и назначается звуковому каналу. (Предполагается, что файл находится в том же каталоге, что и SWF-файл.) Второй файл загружается и передается в виде потока с сайта Adobe. Для использования метода SoundMixer.stopAll()
должны быть доступными все звуки. (Для проверки файла междоменной политики может использоваться объект SoundLoaderContext.) Для каждого звука настроен прослушиватель событий, который вызывается в случае возникновения ошибки ввода/вывода при загрузке звукового файла. Также создается текстовое поле muteButton
. Оно прослушивает события щелчка, при которых вызывается метод muteButtonClickHandler()
.
Если в методе muteButtonClickHandler()
текстовое поле содержит MUTE, то метод areSoundsInaccessible()
проверяет, имеет ли микшер доступ к файлам. Если файлы доступны, метод stopAll()
выключает звуки. При повторном щелчке по текстовому полю возобновляется воспроизведение первого звука, а в текстовом поле снова отображается MUTE. На этот раз метод 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); } } }
Tue Jun 12 2018, 11:34 AM Z