javascript - 使用 Audio() 的怪癖
问题描述
首先,让我承认我是 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 个球在飞行,所有声音都在工作,并且可以关闭/打开。它也适用于 Chrome,最多 22 个球。
有谁知道这里有什么问题?
注意:整个项目可在此处克隆: https ://github.com/DerellLicht/BallDroppings
如果您只想看到它运行: http: //www.derelllicht.com/BallDroppings.htm
画线以阻止流并反弹球,单击“选项”,然后单击“声音”以打开声音。
解决方案
推荐阅读
- ruby-on-rails - Rails 6 前端架构
- python - 致命的 Python 错误:initfsencoding:无法加载文件系统编解码器 - ModuleNotFoundError:没有名为“encodings”的模块
- html - nodejs发送文件html页面
- scala - 避免重新编译 Scalas 脚本
- javascript - 异步函数返回一个promise。如何使promise 值全局化?
- r - 重现 Stata 汇总的 OLS 结果
- python - 我可以在离线的 Windows PC 上安装 Anaconda 吗?
- java - 登录 Spring MVC 应用程序时的自定义响应
- java - 带有类对象的未处理异常类型 ParseException
- typo3 - 带有 UserFunc 的 TYPO3 TCA 标签 - 如何获取 HTML 格式的标签?