在最新版chrome和ios等部分浏览器的限制下,不允许js调用play()自动播放声音,并且可能页面处于后台需要暂停音乐,原生实现较麻烦,所以这里引入layabox的声音管理API实现
新建LayaSoundManager.js
/**初始化并播放背景音乐 */
export const init = () => {
const script = document.createElement('script')
script.src = 'https://xxxx.com/public/laya.core.min.js' //引入api库js
script.async = 'async'
document.body.appendChild(script)
script.onload = () => {
if (window.Laya) {
window.Laya.init(0, 0)
window.Laya.SoundManager.musicMuted = false //背景音乐是否静音
window.Laya.SoundManager.setMusicVolume(0.3) //设置背景音乐音量
window.Laya.SoundManager.setSoundVolume(0.3) //设置音效音量
window.Laya.SoundManager.playMusic(bgMusic, 0) //设置背景音乐音源 第二个参数为循环次数,0是循环播放
}
}
}
/**播放音效
* @param musicUrl 音源
* @param loops 执行次数 0为循环播放
*/
export const playSound = (musicUrl, loops = 1) => {
window.Laya && window.Laya.SoundManager.playSound(musicUrl, loops)
}
控制音乐开关只需要设置 window.Laya.SoundManager.musicMuted
值为true
/false