Пакет | flash.media |
Класс | public final class SoundChannel |
Наследование | SoundChannel EventDispatcher Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
stop()
, свойства для отслеживания амплитуды (громкости) канала и свойство для назначения объекта SoundTransform каналу.
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
leftPeak : Number [только для чтения]
Текущая амплитуда (громкость) левого канала от 0 (тишина) до 1 (полная амплитуда). | SoundChannel | ||
position : Number [только для чтения]
Во время воспроизведения звука свойство position показывает (в миллисекундах) текущую точку воспроизведения в звуковом файле. | SoundChannel | ||
rightPeak : Number [только для чтения]
Текущая амплитуда (громкость) правого канала от 0 (тишина) до 1 (полная амплитуда). | SoundChannel | ||
soundTransform : flash.media:SoundTransform
Объект SoundTransform, назначенный для данного звукового канала. | SoundChannel |
Метод | Определено | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Посылает событие в поток событий. | EventDispatcher | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Останавливает воспроизведение звука в канале. | SoundChannel | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | |||
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. | EventDispatcher | |||
Отправляется после завершения воспроизведения звука. | SoundChannel |
leftPeak | свойство |
position | свойство |
position:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Во время воспроизведения звука свойство position
показывает (в миллисекундах) текущую точку воспроизведения в звуковом файле. Когда звук останавливается или приостанавливается, свойство position
показывает последнюю воспроизведенную точку в звуковом файле.
Чаще всего при остановке звука значение свойства position
сохраняется. Позже можно возобновить воспроизведение, запустив звук с сохраненного положения.
Если звук воспроизводится циклично, значение свойства position
сбрасывается на 0 в начале каждого цикла.
Реализация
public function get position():Number
rightPeak | свойство |
soundTransform | свойство |
soundTransform:flash.media:SoundTransform
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Объект SoundTransform, назначенный для данного звукового канала. Объект SoundTransform включает свойства для настройки громкости, панорамы, назначения левого и правого динамиков.
Реализация
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
Связанные элементы API
stop | () | метод |
public function stop():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Останавливает воспроизведение звука в канале.
Пример ( Использование этого примера )
Конструктор загружает звуковой файл. (В данном примере предполагается, что файл находится в том же каталоге, что и SWF-файл.) Текстовое поле используется в качестве кнопки, нажатием которой пользователь может начать или приостановить воспроизведение. Когда пользователь щелкает текстовое поле button
, запускается метод clickHandler()
.
В методе clickHandler()
при первом щелчке по текстовому полю начинается воспроизведение звука и назначается звуковой канал. Затем, когда пользователь щелкает текстовое поле, чтобы поставить звук на паузу, воспроизведение останавливается. Свойство position
звукового канала записывает положение звука на момент остановки. Это свойство используется для возобновления воспроизведения с того же положения, когда пользователь снова щелкнет текстовое поле, чтобы снять звук с паузы. Каждый раз при вызове метода Sound.play()
создается новый объект SoundChannel, и ему назначается переменная channel
. Объект Sound должен быть назначен объекту SoundChannel, чтобы использовать метод stop()
звукового канала для приостановки звука.
package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.events.MouseEvent; import flash.text.TextFieldAutoSize; public class SoundChannel_stopExample extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel = new SoundChannel(); private var button:TextField = new TextField(); public function SoundChannel_stopExample() { var req:URLRequest = new URLRequest("MySound.mp3"); snd.load(req); button.x = 10; button.y = 10; button.text = "PLAY"; button.border = true; button.background = true; button.selectable = false; button.autoSize = TextFieldAutoSize.CENTER; button.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(button); } private function clickHandler(e:MouseEvent):void { var pausePosition:int = channel.position; if(button.text == "PLAY") { channel = snd.play(pausePosition); button.text = "PAUSE"; } else { channel.stop(); button.text = "PLAY"; } } } }
soundComplete | Событие |
flash.events.Event
свойство Event.type =
flash.events.Event.SOUND_COMPLETE
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Отправляется после завершения воспроизведения звука.
КонстантаEvent.SOUND_COMPLETE
определяет значение свойства type
объекта события soundComplete
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Объект SoundChannel, в котором завершилось воспроизведение звука. |
Пример ( Использование этого примера )
В конструкторе определяется текстовое поле, которое содержит список песен и строку для каждого элемента, выбранного для воспроизведения. (Как правило, для воспроизведения используются кнопки, а для списка песен — окна списков.) Определяется объект формата текста, который изменяет формат строк выбранных песен на курсив. Когда пользователь щелкает текстовое поле, запускается метод clickHandler()
.
В методе clickHandler()
метод getLineIndexAtPoint()
объекта текстового поля возвращает индекс строки, которую щелкнул пользователь. Используя индекс строки, метод getLineText()
получает содержимое текста. Инструкция if проверяет, выбрал ли пользователь песню для воспроизведения или для добавления в список воспроизведения. Если пользователь выбрал песню для воспроизведения, прослушиватель событий щелчка мыши удаляется, и вызывается метод playNext()
для начала воспроизведения. Если пользователь выделил название песни, содержимое строки добавляется в массив songList
и формат текста меняется на курсив.
Метод playNext()
повторяется для загрузки и воспроизведения каждой песни в списке массива. Песне также назначается звуковой канал. Для звукового канала добавляется прослушиватель событий, реагирующий на завершение воспроизведения песни и отправку события Event.SOUND_COMPLETE
. Затем метод soundCompleteHandler()
вызывает метод playNext()
для воспроизведения следующей песни. Этот процесс продолжается, пока не завершится воспроизведение всех песен, перечисленных в массиве.
package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.text.TextFormat; import flash.net.URLRequest; import flash.events.Event; import flash.events.IOErrorEvent; public class SoundChannel_event_soundCompleteExample extends Sprite { private var channel:SoundChannel = new SoundChannel(); private var songList:Array = new Array(); private var listTextField:TextField = new TextField(); private var songFormat:TextFormat = new TextFormat(); private var arrayIndex:int = 0; private var songSelected:Boolean = false; public function SoundChannel_event_soundCompleteExample() { listTextField.autoSize = TextFieldAutoSize.LEFT; listTextField.border = true listTextField.background = true; listTextField.text = "Song1.mp3\n" + "Song2.mp3\n" + "Song3.mp3\n" + "Song4.mp3\n" + "PLAY"; songFormat.italic = true; listTextField.addEventListener(MouseEvent.CLICK, clickHandler); addChild(listTextField); } private function clickHandler(e:MouseEvent):void { var index:int = listTextField.getLineIndexAtPoint(e.localX, e.localY); var line:String = listTextField.getLineText(index); var firstIndex:uint = listTextField.getLineOffset(index); var playLine:uint = listTextField.numLines - 1; if((index == playLine) && (songSelected == true)) { listTextField.removeEventListener(MouseEvent.CLICK, clickHandler); playNext(); } else if (index != playLine) { songList.push(line.substr(0, (line.length - 1))); listTextField.setTextFormat(songFormat, firstIndex, (firstIndex + listTextField.getLineLength(index))); songSelected = true; } } private function playNext():void { if(arrayIndex < songList.length) { var snd:Sound = new Sound(); snd.load(new URLRequest(songList[arrayIndex])); channel = snd.play(); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); arrayIndex++; } else { songSelected = false; while(arrayIndex > 0) { songList.pop(); arrayIndex--; } } } private function soundCompleteHandler(e:Event):void { playNext(); } private function errorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }
package { import flash.display.Sprite; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; import flash.utils.Timer; public class SoundChannelExample extends Sprite { private var url:String = "MySound.mp3"; private var soundFactory:Sound; private var channel:SoundChannel; private var positionTimer:Timer; public function SoundChannelExample() { var request:URLRequest = new URLRequest(url); soundFactory = new Sound(); soundFactory.addEventListener(Event.COMPLETE, completeHandler); soundFactory.addEventListener(Event.ID3, id3Handler); soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler); soundFactory.load(request); channel = soundFactory.play(); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); positionTimer = new Timer(50); positionTimer.addEventListener(TimerEvent.TIMER, positionTimerHandler); positionTimer.start(); } private function positionTimerHandler(event:TimerEvent):void { trace("positionTimerHandler: " + channel.position.toFixed(2)); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function id3Handler(event:Event):void { trace("id3Handler: " + event); } private function ioErrorHandler(event:Event):void { trace("ioErrorHandler: " + event); positionTimer.stop(); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: " + event); } private function soundCompleteHandler(event:Event):void { trace("soundCompleteHandler: " + event); positionTimer.stop(); } } }
Tue Jun 12 2018, 11:34 AM Z