window.runtime 属性window.runtime.flash.media.SoundChannel
继承SoundChannel Inheritance EventDispatcher Inheritance Object
运行时版本:  1.0

SoundChannel 类控制应用程序中的声音。每个声音均分配给一个声道,而且应用程序可以具有混合在一起的多个声道。SoundChannel 类包含 stop() 方法、用于监控声道幅度(音量)的属性以及用于对声道指定 SoundTransform 对象的属性。

查看示例

另请参见

Sound
SoundTransform


属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  leftPeak : Number
[只读 (read-only)] 左声道的当前幅度(音量),范围从 0(静音)至 1(最大幅度)。
SoundChannel
  position : Number
[只读 (read-only)] 当播放声音时,position 属性指示声音文件中当前播放的位置(以毫秒为单位)。
SoundChannel
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  rightPeak : Number
[只读 (read-only)] 右声道的当前幅度(音量),范围从 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
hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。
Object
 Inherited
isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。
Object
  
stop():void
停止在该声道中播放声音。
SoundChannel
 Inherited
toString():String
返回指定对象的字符串表示形式。
Object
 Inherited
valueOf():Object
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  在声音完成播放后调度。SoundChannel
属性详细信息
leftPeak属性
leftPeak:Number  [只读 (read-only)]
运行时版本:  1.0

左声道的当前幅度(音量),范围从 0(静音)至 1(最大幅度)。

position属性 
position:Number  [只读 (read-only)]
运行时版本:  1.0

当播放声音时,position 属性指示声音文件中当前播放的位置(以毫秒为单位)。当停止或暂停播放声音时,position 属性指示声音文件中上次播放的位置。

一种常见使用情形是,在停止播放声音时保存 position 属性的值。以后,您可以从保存的位置重新开始以恢复播放声音。

如果循环播放声音,则在每次循环开始时,将 position 重置为 0。

rightPeak属性 
rightPeak:Number  [只读 (read-only)]
运行时版本:  1.0

右声道的当前幅度(音量),范围从 0(静音)至 1(最大幅度)。

soundTransform属性 
soundTransform:SoundTransform
运行时版本:  1.0

分配给该声道的 SoundTransform 对象。SoundTransform 对象包含用于设置音量、平移、左扬声器指定和右扬声器指定的属性。

另请参见

方法详细信息
stop()方法
function stop():void
运行时版本:  1.0

停止在该声道中播放声音。


示例

在下面的示例中,用户可以单击按钮来暂停并重放声音文件。

在 init() 函数中,加载了该声音文件。当用户单击“Play”(播放)按钮时,将调用 clickHandler() 方法。

clickHandler() 函数中,当用户第一次单击该按钮时,会将声音设置为播放并将声音分配给声道。然后,当用户再次单击该按钮时,则会将声音设置为暂停,声音将停止播放。声道的 position 属性记录声音停止时的位置。此数字用于在用户单击该按钮以重新开始播放后从该位置开始恢复播放声音。每次调用 Sound.play() 方法时,将创建一个新的 SoundChannel 对象并将其分配给 channel 变量。将 Sound 对象的 play 方法的结果分配给 SoundChannel 对象,以使用声道的 stop() 方法暂停声音。

  1. 将 AIRAliases.js 文件添加到项目目录。
  2. 将一个名为 test.mp3 的 MP3 文件放在同一项目目录中。
  3. 为该项目创建应用程序描述符文件,并使用 ADL 测试该项目。
<html>
    <head>
      <script src="AIRAliases.js" />
      <script>
        var sound = new air.Sound();
        var button;
        var channel;
        var pausePosition = 0;
        function init() 
        {
            var req = new air.URLRequest("test.mp3");
            sound.load(req);
            
            button = document.getElementById("playButton");
        }

        function clickHandler() {
            if (button.value == "Play") 
            {
                channel = sound.play(pausePosition);
                button.value = "Pause";
            } 
            else 
            {
                pausePosition = channel.position;
                channel.stop();
                button.value = "Play";
            }
        }
      </script>
    </head>
    <body onload='init()'>
      <input type="button" id="playButton" value="Play" onclick="clickHandler()"/>
    </body>
</html>
事件详细信息
soundComplete 事件
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.SOUND_COMPLETE
运行时版本:  1.0

在声音完成播放后调度。

Event.SOUND_COMPLETE 常量定义 soundComplete 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
target其中声音已播放完毕的 SoundChannel 对象。

示例

在以下示例中,应用程序按顺序播放列表中的声音文件。

mp3Array 数组定义要播放的声音文件。playNext() 函数播放数组中的下一个 MP3 文件。完成声音播放后,声音将调度 soundComplete 事件。该事件处理函数调用 playNext() 函数以播放下一种声音(如果有)。

<html>
    <head>
      <script src="AIRAliases.js" />
      <script>
        var mp3Array = ["test1.mp3", "test2.mp3"];
        var index = 0;
        var nowPlayingText;
        
        function init()
        {
             nowPlayingText = document.getElementById("nowPlayingText");
             playNext();
        }
        function playNext() 
        {
             if(index < mp3Array.length) 
             {
                var snd = new air.Sound();
                snd.load(new air.URLRequest(mp3Array[index]));
                channel = snd.play();
                channel.addEventListener(air.Event.SOUND_COMPLETE, soundCompleteHandler);
                nowPlayingText.value = mp3Array[index];
                index++;
            } 
            else 
            {                    
                nowPlayingText.value = "";
            }
        }    

        function soundCompleteHandler(event) 
        {
            playNext();
        }

        function errorHandler(errorEvent) 
        {
            air.trace(errorEvent.text);
        }
      </script>
    </head>
    <body onload='init()'>
        Now playing: 
        <p> <input type="text" id="nowPlayingText" width="200" /> </p>
    </body>
</html>
示例
SoundChannelExample.as

以下示例加载一个 MP3 文件,进行播放,并显示在加载和播放该 MP3 文件时所发生的声音事件的相关信息。Timer 对象每秒提供一次有关播放头位置的更新信息。若要运行此示例,请将一个名为 MySound.mp3 的文件放在 SWF 文件所在的同一目录中。

注意:要测试此示例,请执行以下操作:

  1. 将 AIRAliases.js 文件添加到项目目录。
  2. 将一个名为 test.mp3 的 MP3 文件放在同一项目目录中。
  3. 为该项目创建应用程序描述符文件,并使用 ADL 测试该项目。
<html>
    <head>
      <script src="AIRAliases.js" />
      <script>
        function init() 
        {
            var request = new air.URLRequest("test.mp3");
            var sound = new air.Sound();
            sound.addEventListener(air.Event.COMPLETE, completeHandler);
            sound.addEventListener(air.Event.ID3, id3Handler);
            sound.addEventListener(air.IOErrorEvent.IO_ERROR, ioErrorHandler);
            sound.addEventListener(air.ProgressEvent.PROGRESS, progressHandler);
            sound.load(request);

            channel = sound.play();
            channel.addEventListener(air.Event.SOUND_COMPLETE, soundCompleteHandler);

            positionTimer = new air.Timer(1000);
            positionTimer.addEventListener(air.TimerEvent.TIMER, positionTimerHandler);
            positionTimer.start();
        }
        

        function positionTimerHandler(event) 
        {
            air.trace("positionTimerHandler: " + channel.position.toFixed(2));
        }

        function completeHandler(event) 
        {
            air.trace("completeHandler: " + event);
        }

        function id3Handler(event) 
        {
            air.trace("id3Handler: " + event);
        }

        function ioErrorHandler(event) 
        {
            air.trace("ioErrorHandler: " + event);
            positionTimer.stop();       
        }

        function progressHandler(event) 
        {
            air.trace("progressHandler: " + event);
        }

        function soundCompleteHandler(event) 
        {
            air.trace("soundCompleteHandler: " + event);
            positionTimer.stop();
        }
      </script>
    </head>
    <body onload='init()'>
    </body>
</html>