如何在SoundManager2中测试声音是否正在播放?

时间:2014-10-24 01:40:53

标签: javascript audio soundmanager2

我正在寻找一种简单的方法来检查SoundManager2当前是否正在播放声音。我希望有一个类似" SoundManager.isSoundPlaying"的功能。但是我没有看到这个功能。

4 个答案:

答案 0 :(得分:3)

在SoundManager 2中,有一个名为“playState”的动态属性,它返回这些值:

表示声音当前播放状态的数字值。

  • 0 =已停止/未初始化
  • 1 =播放或缓冲声音(播放已被调用,等待数据等。)

请注意,在缓冲和自动播放状态下,1可能无法始终保证听到声音。

所以你可以这样做:

var myAudio = soundManager.createSound({
    id: 'myAudioId',
    url: "/audiofile/url.mp3",
    autoPlay: true
});
if (myAudio.playState === 1) {
    // audio playing (or buffering)
}

documentation page of SoundManager2

中的更多信息

答案 1 :(得分:1)

" playState"的主要问题即使声音低于"暂停"它也会返回1状态。 解决方案可能是检查持续时间是否为空,因为一旦加载声音,持续时间始终为一个值,然后还要检查声音是否已暂停,因为即使暂停声音后持续时间值也会保留。 解决方案可以是:

// assuming s is the soundmanager object

// playing status
if (s.duration&&!s.paused) {    

}
else {

}

答案 2 :(得分:0)

我不认为声音管理员有这样的变数..

我建议使用全局变量" isPlaying"默认为false,并添加" isPlaying =!isPlaying"在你的播放/暂停点击事件中。

答案 3 :(得分:0)

它实际上有一种说法,如果它暂停了。这基本上是一回事。 只是做

if(!_audioInstance.paused){
    // is playing
}