RTS Game HTML5 Audio в Chrome MP3 и OGG заикается и останавливается - PullRequest
1 голос
/ 28 января 2012

Мы пишем демонстрационную игру Real Time Strategy (RTS) для Canvas на HTML5 / JavaScript, и у нас все работает. Тем не менее, в Chrome (самая последняя версия) звук продолжает заикаться и, в конце концов, просто сдается. Код прекрасно работает в последних версиях Firefox, IE9 и Safari (хотя на iOS4 iPhone / iPad звук отсутствует, но, по всей видимости, это коммерческое решение Apple). Вы можете сами убедиться в том, что по приведенной ниже ссылке вы услышите несколько звуков одновременно, чтобы вызвать проблему.

http://www.enterprisewarfare.com/Play.aspx

Ниже приведен упрощенный код воспроизведения звука, обратите внимание, что каждый звук существует 4 раза (AUDIO_CHANELS_PER_FILE), чтобы имитировать более одного канала. Регулировка этого числа не приводит к потере звука раньше или позже, поэтому это не связано с достижением конца массива или повторным воспроизведением того же аудиообъекта. Мы опробовали форматы файлов OGG и MP3, и все работает в IE9 (MP3) и Firefox (OGG) без проблем. Мы также пытались найти файл обратно в начало, но безрезультатно.

    this.PlaySound = function(sId)
    {

        var iSoundMapIndex;
        var asoundChannels;

        if(sId == null || sId.length == 0) return;

        // Grab sound channels array
        iSoundMapIndex = this.SoundMap[sId];
        asoundChannels = this.Sounds[iSoundMapIndex];
        if(asoundChannels == null)
        {
            this.World.AddMessage("Unable to find sound \"" + sId + "\".");
            return;
        }

        // play the next in sequence
        asoundChannels[this.SoundChannel[iSoundMapIndex]].volume = 1;
        asoundChannels[this.SoundChannel[iSoundMapIndex]].play();
        this.SoundChannel[iSoundMapIndex]++;
        if(this.SoundChannel[iSoundMapIndex] == this.AUDIO_CHANNELS_PER_FILE) this.SoundChannel[iSoundMapIndex] = 0;

    }

Ответы [ 2 ]

0 голосов
/ 07 сентября 2012

Оказывается, это была ошибка в Chrome, и, похоже, теперь это исправлено.Тем не менее, некоторые проблемы с загрузкой звука и несколькими каналами, но полная разбивка звука, похоже, решена.

0 голосов
/ 25 мая 2012

Кажется, что это проблема с хромом и хромом. Я бы посоветовал просмотреть отчеты об ошибках и ответы на них разработчиков или просто подождать, пока они будут решены, и игнорировать проблему.

Жаль, что никто с большим опытом, чем я, в javascript не сделал никаких предложений относительно обходного пути. Я поднял вопрос в надежде, что вы найдете какую-то помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...