我怎么知道Sound对象是否正在播放?

时间:2012-01-18 21:34:58

标签: actionscript-3

在AS3中,我创建了一个加载声音并在流媒体中执行的代码。

var mySound:Sound = new Sound();
var myChannel:SoundChannel = new SoundChannel();
mySound.load(new URLRequest("surrender.mp3"));
myChannel = mySound.play();

考虑到mp3文件放在服务器上,我需要跟踪它是否已经开始或仍然从服务器接收初始数据。一旦它有效地开始,我就要调用一个初始化一些东西的函数。

问题是,如果声音或通道对象“正在播放”,我如何追踪?

2 个答案:

答案 0 :(得分:0)

您可以通过侦听Sound对象调度的不同事件以及Sound.isBuffering等属性来检查这一点

请参阅Sound manpage

答案 1 :(得分:0)

你可以等待mp3完全加载

var myChannel:SoundChannel;
var soundFactory:Sound = new Sound();
soundFactory.addEventListener(Event.COMPLETE, completeHandler);
soundFactory.load(request);

// ...

private function completeHandler(event:Event):void {
    trace("completeHandler: " + event);
    myChannel = soundFactory.play();
}

或者您可以使用Timer并定期检查myChannel.position - 如果它没有改变停止播放的声音......