无法通过JS加载所有声音

时间:2012-04-17 17:04:32

标签: javascript html5

我正在使用css3和html5在javascript中开发一种游戏。游戏使用多种声音(目前为156)。它们中的大多数非常短 - 最多3秒。我在开始时加载它们,将它们存储在数组中并根据用户操作播放它们。这是代码:

var Sounds=[];
var SoundsLoaded = 0;

function AddSound( filename )
{
    var sound = new Audio();          //creating  a new sound for the game
    sound.src = filename;
    sound.loop = false;
    sound.autoplay=false;
    sound.autobuffer=true;
    sound.preload="auto";

    Sounds.push( sound );            //add it to the container
}

function LoadSounds()
{
    for( i = 0; < src.length; i++)   //altogether about 150 files
       AddSound( src[i] );

    for( i = 0; i < Sounds.length; i++ )
    {
        Sounds[i].addEventListener( "loadeddata", function()
        { 
            SoundsLoaded++;

            if( SoundsLoaded == Sounds.length )
            {
                 AllSoundsLoaded();     //continue when all sounds are ready to use
            }
        });

        Sounds[i].addEventListener( "error", function()
        {
             alert(this.error.code);          //alerts with code 4
             alert(this.networkState);        //alerts with state 3
        });

        Sounds[i].load();
    } 
 }

在Chrome和Firefox中一切正常,但是Opera和IE存在问题: 加载几个声音后,出现错误: MEDIA_ERR_SRC_NOT_SUPPORTED(4)和NETWORK_NO_SOURCE(3)

对我来说,为什么会有错误,这很奇怪,因为:

  1. 我确定音频文件在那里
  2. chrome和firefox正确加载所有文件
  3. 所有音频文件都在同一目录中
  4. 所有音频文件都使用相同的编解码器(audio / x-vorbis + ogg)或(audio / mpeg)。我使用的src是为所有其他人设置的IE ogg for the mp3
  5. 它发生几次,歌剧加载少于32个文件,但在9/10案例歌剧负载!!!确切!声音中有32个,这些文件并不完全相同 6.有什么建议可以解决吗?我想避免将更多声音合并到一个并且只播放适当的部分
  6. 测试浏览器:opera 11.62,ff 11,chromium 18,即(9),

    有人遇到过这种行为吗? 我忘了还是应该设置一些Audio元素属性? opera(和IE)对加载的声音数量有缓存限制吗?是否可以使用JS更改它?

0 个答案:

没有答案