包 | 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
变量。要使用声道的 stop()
方法暂停声音,必须将 Sound 对象分配给 SoundChannel 对象。
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
常量定义 soundComplete
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
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:04 AM Z