cocos creator全局开关音效设置之静音开关
摘要cocos creator全局开关音效设置之静音开关。AudioEngine 与 AudioSource 都能播放音频,它们的区别在于 AudioSource 是组件,可以添加到场景中,由编辑器设置。而 AudioEngine 是引擎提供的纯 API,只能在脚本中进行调用。目前建议使用 audioEngine.play 接口来统一播放音频。或者也可以使用 audioEngine.playEff
摘要
cocos creator全局开关音效设置之静音开关。AudioEngine 与 AudioSource 都能播放音频,它们的区别在于 AudioSource 是组件,可以添加到场景中,由编辑器设置。而 AudioEngine 是引擎提供的纯 API,只能在脚本中进行调用。目前建议使用 audioEngine.play 接口来统一播放音频。或者也可以使用 audioEngine.playEffect 和 audioEngine.playMusic 这两个接口,前者主要是用于播放音效,后者主要是用于播放背景音乐。
环境
cocos Creator 引擎2.4.3
编辑工具HBuild X
最终效果
体验一下
效果图如下
看一下cocos的目录结构
AudioEngine 播放的时候,需要注意这里传入的是一个完整的 AudioClip 对象(而不是 url)。所以不建议在 play 接口内直接填写音频的 url 地址,而是希望用户在脚本的 properties 中先定义一个 AudioClip,然后在编辑器的 属性检查器 中添加对应的用户脚本组件,将音频资源拖拽到脚本组件的 audio-clip 上。如下所示:
上代码
//播放音乐
playAudio(clip, loop, volume, name) {
var isLoop = loop ? loop : false;
var volume = volume ? volume : 0.5;
//console.log(clip);
if (cc.vv.isSound == 1) {
if (clip.loaded) {
if (name) {
if (!cc.vv[name + "Flag"]) {
cc.vv[name] = cc.audioEngine.play(clip, isLoop, volume);
cc.vv[name + "Flag"] = true;
cc.audioEngine.setFinishCallback(cc.vv[name], (res) => {
cc.vv[name + "Flag"] = false;
})
}
} else
cc.audioEngine.play(clip, isLoop, volume);
}
}
},
//停止播放音乐
stopAudio(cli) {
cc.audioEngine.stop(cli);
},
注意:如果音频播放相关的设置都完成后,在部分浏览器上预览或者运行时仍听不到声音,那可能是由于浏览器兼容性导致的问题。例如:Chrome 禁用了 WebAudio 的自动播放,而音频默认是使用 Web Audio 的方式加载并播放的,此时用户就需要在 资源管理器 中选中音频资源,然后在 属性检查器 中将音频的加载模式修改为 DOM Audio 才能在浏览器上正常播放。
结语:
欢迎加入微信群一起学习讨论!
这里是一个专注于游戏开发的社区,我们致力于为广大游戏爱好者提供一个良好的学习和交流平台。我们的专区包含了各大流行引擎的技术博文,涵盖了从入门到进阶的各个阶段,无论你是初学者还是资深开发者,都能在这里找到适合自己的内容。除此之外,我们还会不定期举办游戏开发相关的活动,让大家更好地交流互动。加入我们,一起探索游戏开发的奥秘吧!
更多推荐
所有评论(0)