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); 
} 

Звук немного прерывистый. Если есть лучший способ исправить это, пожалуйста, дайте мне знать.

Другие вопросы по тегам