0

当以 100 间隔播放相同的长声音时,几秒钟后,我开始收到“没有声音硬件,或 32 声音上限命中”错误。

要重现此问题:

1-打开浏览器(我用的是IE10和Chrome)

2- 启动其开发人员工具 (F12) 并转到控制台选项卡。

3-确保音量低,因为一旦您点击以下链接,声音就会开始播放。

4-点击此网址:https ://googledrive.com/host/0B92G3ib2ozRVcS1RcHI5eGpzOXc/default.htm

5- 声音将开始播放,然后会有一片寂静。在静音期间,您将在控制台中收到错误“test: play(): No sound hardware, or 32-sound ceiling hit”。(SoundManager 处于调试模式,因此您之前会收到很多记录的消息)

4

2 回答 2

0

最多可同时发出 32 个声音。如果您每 100 毫秒播放一个新声音,您将在 3.2 秒内达到该限制。这就是 32 音上限的含义。

于 2013-04-13T07:09:31.547 回答
0

我通过在播放相同的声音之前检查声音 playState 是否 == 0 并在 playState 为 != 0 时将其位置设置为 0 来解决这个问题。

代码如下所示:

if (this.sounds[id].playState == 0) { 
    this.sounds[id].play({ volume: this.volume * 100.0 }); 
} else { 
    // if sound is already playing then move it to the beginning  
    this.sounds[id].setPosition(0); 
} 

声音感觉有点波涛汹涌。如果有更好的方法来解决这个问题,请告诉我。

于 2013-04-13T19:27:04.177 回答