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

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

Класс SoundChannel управляет звуком в приложении. Каждый звук, воспроизводимый в приложении Adobe® Flash®, назначается звуковому каналу, и приложение может иметь несколько звуковых каналов, которые микшируются вместе. Класс SoundChannel содержит метод stop(), свойства для отслеживания амплитуды (громкости) канала и свойство для настройки объекта SoundTransform для канала.

Посмотреть примеры

См. также

Sound
SoundTransform


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  leftPeak : Number
[только для чтения] Текущая амплитуда (громкость) левого канала от 0 (тишина) до 1 (полная амплитуда).
SoundChannel
  position : Number
[только для чтения] Во время воспроизведения звука свойство position показывает текущую точку воспроизведения в звуковом файле.
SoundChannel
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  rightPeak : Number
[только для чтения] Текущая амплитуда (громкость) правого канала от 0 (тишина) до 1 (полная амплитуда).
SoundChannel
  soundTransform : SoundTransform
Объект SoundTransform, назначенный для данного звукового канала.
SoundChannel
Общедоступные методы
 МетодОпределено
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях.
EventDispatcher
 Inherited
Передает событие в поток событий.
EventDispatcher
 Inherited
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
Останавливает воспроизведение звука в канале.
SoundChannel
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
 Inherited
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным.EventDispatcher
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным.EventDispatcher
  Отправляется после завершения воспроизведения звука.SoundChannel
Сведения о свойстве
leftPeakсвойство
leftPeak:Number  [только для чтения]

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

Текущая амплитуда (громкость) левого канала от 0 (тишина) до 1 (полная амплитуда).



Реализация
    public function get leftPeak():Number
positionсвойство 
position:Number  [только для чтения]

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

Во время воспроизведения звука свойство position показывает текущую точку воспроизведения в звуковом файле. Когда звук останавливается или приостанавливается, свойство position показывает последнюю воспроизведенную точку в звуковом файле.

Чаще всего при остановке звука значение свойства position сохраняется. Позже можно возобновить воспроизведение, запустив звук с сохраненного положения.

Если звук воспроизводится циклично, значение свойства position сбрасывается на 0 в начале каждого цикла.



Реализация
    public function get position():Number
rightPeakсвойство 
rightPeak:Number  [только для чтения]

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

Текущая амплитуда (громкость) правого канала от 0 (тишина) до 1 (полная амплитуда).



Реализация
    public function get rightPeak():Number
soundTransformсвойство 
soundTransform:SoundTransform  [чтение и запись]

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

Объект SoundTransform, назначенный для данного звукового канала. Объект SoundTransform включает свойства для настройки громкости, панорамы, назначения левого и правого динамиков.



Реализация
    public function get soundTransform():SoundTransform
    public function set soundTransform(value:SoundTransform):void

См. также

Сведения о методе
stop()метод
public function stop():void

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

Останавливает воспроизведение звука в канале.


Пример

В следующем примере пользователь может нажать кнопку, чтобы приостановить звуковой файл и повторно воспроизвести его.

Конструктор загружает звуковой файл. (В данном примере предполагается, что файл находится в том же каталоге, что и 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
Версии среды выполнения:  1.0 9

Отправляется после завершения воспроизведения звука.

Константа Event.SOUND_COMPLETE определяет значение свойства type объекта события soundComplete.

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetОбъект Sound, в котором завершилось воспроизведение звука.

Пример

В следующем примере пользователь выбирает песни из списка воспроизведения, а затем нажимает кнопку "Воспроизведение", чтобы прослушать их в выбранном порядке.

В конструкторе определяется текстовое поле, которое содержит список песен и строку для каждого элемента, выбранного для воспроизведения. (Как правило, для воспроизведения используются кнопки, а для списка песен — окна списков.) Определяется объект формата текста, который изменяет формат строк выбранных песен на курсив. Когда пользователь щелкает текстовое поле, запускается метод 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);
        }
    }
}
Примеры Как пользоваться примерами
SoundChannelExample.as

В следующем примере загружается и воспроизводится МР3-файл, а также отображаются данные о звуковых событиях, которые происходят по мере загрузки и воспроизведения файла. Объект Timer передает обновленную информацию о положении точки воспроизведения каждые 50 миллисекунд. Чтобы запустить данный пример, поместите файл MySound.mp3 в тот каталог, где находится рассматриваемый SWF-файл.
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();
        }
    }
}