我正在使用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)
对我来说,为什么会有错误,这很奇怪,因为:
测试浏览器:opera 11.62,ff 11,chromium 18,即(9),
有人遇到过这种行为吗? 我忘了还是应该设置一些Audio元素属性? opera(和IE)对加载的声音数量有缓存限制吗?是否可以使用JS更改它?