我如何知道是否有声音对象在播放



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

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

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

问题是,如果声音或频道对象"正在播放",我该如何追踪?

您可以通过监听Sound对象调度的不同事件及其属性(如Sound.isBuffering )来检查这一点

请参阅声音手册页

您可以等待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——如果它没有改变停止播放的声音。。。

最新更新