Howler.js:声音停止检测语法及播放/时长方法使用咨询
Howler.js 音频实例交互实操指南
1. 获取音频标识(实例引用)
Howler.js 没有单独的字符串型音频ID,你创建的Howl实例对象本身就是交互的核心标识。只要在创建时保存这个引用,就能在任意函数里调用它的方法:
// 创建音频实例并保存引用(这就是你的"音频ID") const myAudio = new Howl({ src: ['your-audio-file.mp3'], autoplay: false });
2. 使用 playing() 检查播放状态
playing() 方法用来判断音频是否处于播放状态,单实例场景直接调用即可;多实例(同一音频多次播放)时,可传入播放实例ID精准判断:
单实例场景
// 封装检查播放状态的函数 function checkPlayState() { if (myAudio.playing()) { console.log('音频正在播放'); } else { console.log('音频已暂停或未启动'); } } // 绑定按钮触发检查 document.querySelector('#check-btn').addEventListener('click', checkPlayState);
多实例场景
// 启动一个播放实例并保存其ID const playInstanceId = myAudio.play(); // 检查该特定实例是否在播放 if (myAudio.playing(playInstanceId)) { console.log('这个播放实例正在运行'); }
3. 使用 duration() 获取音频时长
duration() 用于获取音频的总时长(单位:秒),注意要等音频加载完成后调用才能拿到正确值:
基础用法
// 音频加载完成后获取时长 myAudio.on('load', () => { const totalDuration = myAudio.duration(); console.log(`音频总时长:${totalDuration}秒`); }); // 也可以在播放时获取 myAudio.on('play', () => { console.log(`当前音频时长:${myAudio.duration()}秒`); });
多实例场景
传入播放实例ID同样能获取时长(本质和音频总时长一致):
const playId = myAudio.play(); console.log(`时长:${myAudio.duration(playId)}秒`);
4. 跨函数交互完整示例
比如在一个函数初始化播放,另一个函数控制暂停:
// 全局保存音频实例,方便跨函数访问 let activeAudio; // 初始化并播放音频 function startAudio() { activeAudio = new Howl({ src: ['bgm.mp3'], autoplay: true }); } // 暂停音频的函数 function pauseActiveAudio() { // 先判断实例存在且正在播放 if (activeAudio && activeAudio.playing()) { activeAudio.pause(); console.log('音频已暂停'); } } // 调用示例 startAudio(); // 3秒后自动暂停 setTimeout(pauseActiveAudio, 3000);
内容的提问来源于stack exchange,提问作者cssyphus
相关产品推荐
相关产品推荐

