| 包 | flash.media |
| 类 | public final class SoundChannel |
| 继承 | SoundChannel EventDispatcher Object |
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
stop() 方法、用于监控声道幅度(音量)的属性,以及用于对声道设置 SoundTransform 对象的属性。
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。
| Object | |
| leftPeak : Number
[read-only]
左声道的当前幅度(音量),范围从 0(静音)至 1(最大幅度)。
| SoundChannel | ||
| position : Number
[read-only]
当播放声音时,position 属性指示声音文件中当前播放的位置。
| SoundChannel | ||
![]() | prototype : Object
[static]
对类或函数对象的原型对象的引用。
| Object | |
| rightPeak : Number
[read-only]
右声道的当前幅度(音量),范围从 0(静音)至 1(最大幅度)。
| SoundChannel | ||
| soundTransform : 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 | |
![]() |
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
| EventDispatcher | |
| 事件 | 摘要 | 定义方 | ||
|---|---|---|---|---|
![]() | Flash Player 获得操作系统焦点并变为活动状态时调度。 | EventDispatcher | ||
![]() | Flash Player 失去操作系统焦点并变为非活动状态时调度。 | EventDispatcher | ||
| 在声音完成播放后调度。 | SoundChannel | |||
| leftPeak | 属性 |
leftPeak:Number [read-only]
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
左声道的当前幅度(音量),范围从 0(静音)至 1(最大幅度)。
public function get leftPeak():Number
| position | 属性 |
position:Number [read-only]
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
当播放声音时,position 属性指示声音文件中当前播放的位置。 当停止或暂停播放声音时,position 属性指示声音文件中上次播放的位置。
一种常见使用情形是,在停止播放声音时保存 position 属性的值。 以后,您可以从保存的位置重新开始以恢复播放声音。
public function get position():Number
| rightPeak | 属性 |
rightPeak:Number [read-only]
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
右声道的当前幅度(音量),范围从 0(静音)至 1(最大幅度)。
public function get rightPeak():Number
| soundTransform | 属性 |
soundTransform:SoundTransform [read-write]
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
分配给该声道的 SoundTransform 对象。 SoundTransform 对象包含用于设置音量、平移、左扬声器指定和右扬声器指定的属性。
public function get soundTransform():SoundTransform
public function set soundTransform(value:SoundTransform):void
另请参见
| stop | () | 方法 |
public function stop():void
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
停止在该声道中播放声音。
在构造函数中,加载了该声音文件。 (此处,假定该文件位于与 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
flash.events.Event.SOUND_COMPLETE
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
在声音完成播放后调度。
定义soundComplete 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
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);
}
}
}
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();
}
}
}
当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/media/SoundChannel.html