问题
在使用soundjs时,有需要注册多个音频文件的场景需求,网上也很少有人写专门的使用方法,自己摸索了下,总结出下面的使用方法。
解决
先放出使用方法:
1.定义注册所有音效方法
function soundFun() {
//定义歌曲路径
var assetPath = "./src/music/";
//定义所有需要注册的音效文件
var sounds = [{src: "auth.wav",id: "auth"},
{src: "insertCard.wav",id: "insertCard"},
{src: "insertIDCard.wav",id: "insertIDCard"}];
//定义播放源类型
createjs.Sound.alternateExtensions = ["mp3"];
//监听音效注册完成后
createjs.Sound.on("fileload", loadHandler);
//对音效进行注册
createjs.Sound.registerSounds(sounds, assetPath);
function loadHandler(event) {
//这会引发每个已注册的声音
}
}
2.定义使用音效方法
var instance;
function playAudio(soudId){
//创建声源(通过注册的id来创建)
instance = createjs.Sound.createInstance(soudId)
//监听音效播放完成事件
instance.on('complete', handleComplete)
//修改音量
instance.volume = 0.5
//播放音效
instance.play()
function handleComplete() {
//监听音效播放完毕后
}
}
3.使用音效
soundFun()//注册音效
playAudio('auth')//播放音效
分析
如果直接注册完后就在loadHandler函数里面执行播放音效的话,这样是会如下警告的。
这是因为chrome浏览器不支持自动播放,需要手动设置:
- 地址栏中输入chrome://flags/#autoplay-policy;
- 将autoplay-policy选项的Default换成No user gesture is required