移动端按钮点击音效播放总是卡顿怎么办?
在开发音乐类App时给按钮加了点击音效,用audio标签播放wav文件,结果手机端点击特别卡顿。试过改成mp3和用preload属性,但滑动页面时音效还是偶尔延迟,有没有什么优化方法?
代码结构大概是这样的:
<button onclick="playSound()">
<audio id="click-sound" preload="auto">
<source src="click.wav" type="audio/wav">
</audio>
点击播放
</button>
用JavaScript控制播放时也试过把audio标签移到body里,但问题依旧…
把audio标签提到body最前面,不要放在button里面,结构改成这样:
然后js用这个:
关键点:
用mp3格式,移动端兼容性比wav好
audio要全局只用一个实例,不要每次点击都创建
每次播放前重置currentTime,不然播第二遍会没声音
加上catch防止静音时报错阻断流程
如果还卡顿,可以试试用Web Audio API预加载音频,不过这个方案已经能解决大部分情况了。