Javascript 使用音频的怪癖()

Javascript 使用音频的怪癖(),javascript,audio,Javascript,Audio,首先,让我承认我是javascript的新手。。。我的职业生涯在C和C++上,主要是在嵌入式领域。 因此,我试图用一个名为BallDroppings的旧html/javascript程序解决一些问题。 它从一个.swf文件中提取声音文件,使用fm.playSound()播放这些文件,一旦声音被启用,它就会在大多数浏览器中挂起 因此,我将声音文件提取到单独的.mp3文件中,并使用Audio()播放它们: // fm.playSound(Math.round(vel));//call flash f

首先,让我承认我是javascript的新手。。。我的职业生涯在C和C++上,主要是在嵌入式领域。 因此,我试图用一个名为BallDroppings的旧html/javascript程序解决一些问题。 它从一个.swf文件中提取声音文件,使用fm.playSound()播放这些文件,一旦声音被启用,它就会在大多数浏览器中挂起

因此,我将声音文件提取到单独的.mp3文件中,并使用Audio()播放它们:

// fm.playSound(Math.round(vel));//call flash function
var str = "sounds/sound_" + ("00" + vel).substr(-2,2) + ".mp3" ;
// console.log(str)
// sounds/sound_07.mp3
var hdlAudio = new Audio(str);
hdlAudio.play();
这是可行的,最初。。。然而,该程序的本质是,随着显示变得越来越复杂,越来越多的球(因此,声音)处于活动状态

我发现,在某些浏览器(Firefox和Pale Moon)中,一旦有一定数量的声音处于活动状态,系统就会出现混乱,程序会失去对声音的控制——这意味着,除其他外,声音无法关闭,并且不是所有应该播放的声音都在播放。。。 有趣的是,MS Edge不会出现此问题;我已经有26个球在飞行中,所有的声音都在工作,可以关闭/打开。它也适用于铬合金,最多22个球

有人知道这里出了什么问题吗

注意:整个项目可在此处进行克隆:

如果您只想看到它运行:

画线阻挡水流,并将球弹起, 单击“选项”,然后单击“声音”打开声音