SoundManager 32-звуковая ошибка удара потолка
При воспроизведении одинаковых длинных звуков с интервалом в 100 секунд, через несколько секунд, я получаю ошибку "Нет звукового оборудования или 32-звуковой удар по потолку".
Чтобы воспроизвести эту проблему:
1- Откройте браузер (я использовал IE10 и Chrome)
2. Запустите инструмент разработчика (F12) и перейдите на вкладку "Консоль".
3. Убедитесь, что громкость низкая, так как звук начнет воспроизводиться, как только вы нажмете следующую ссылку.
4- Нажмите этот URL: https://googledrive.com/host/0B92G3ib2ozRVcS1RcHI5eGpzOXc/default.htm
5- Звук начнет воспроизводиться, а затем наступит тишина. Во время молчания вы получите сообщение "test: play(): нет звукового оборудования или 32-звукового потолка" в консоли. (SoundManager находится в режиме отладки, поэтому вы получите много зарегистрированных сообщений раньше)
2 ответа
Существует ограничение на 32 одновременных звука. Если вы воспроизводите новый звук каждые 100 мс, вы достигнете этого предела за 3,2 секунды. Вот что означает потолок с 32 звуками.
Я решил эту проблему, проверив, равен ли звук playState == 0, прежде чем воспроизводить тот же звук, и установил его положение на 0, если playState равен!= 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);
}
Звук немного прерывистый. Если есть лучший способ исправить это, пожалуйста, дайте мне знать.