关于音效和背景音乐延迟问题

正在做一个H5小游戏
关于音效和背景音乐有几个问题**(主要测试微信)**:

  1. 音效
    通过cc.audioEngine.play(audioClip)同一个音效第一次播放会出现延迟;
    解决办法:通过在节点上挂载AudioSource并勾选preload,然后播音效时用audioSource.play(),可解决延迟问题。
    疑问:如果AudioSource分别挂载到不同的节点,感觉有点凌乱,不好管理;如果一个节点上挂载多个AudioSource,虽然可以通过getComponents(cc.AudioSource)获取音效数组,但访问数组好像只能通过索引去访问,也就是去播放音效时,需要知道这个音效的索引值,感觉也不方便。有没有更好的方式,技能解决音效延迟,又比较易于管理?

  2. 背景音乐
    通过其他帖子了解到,背景音乐要用cc.audioEngine.playMusic(cc.url.raw(musicPath))去播放,但是会出现比较长的延迟,安卓微信测试,223K的背景音乐延迟大概5秒(本地环境),感觉有点久。有人说用cc.Audio.useWebAudio = true强制使用webAudio,经测试对背景音乐并没有多大影响;不知道有没有更好的方式播放背景音乐?

望不吝赐教!:5:
别沉啊

是在什么机型平台上测试的哇?

如果对即时性要求高的最好就用 webAudio,因为 dom audio 天生的就是播放的时候才解析,所以对机型的处理能力和浏览器的解析过程要求比较高。

如果要用 audioSource 来控制,可以专门建立一个 node,底下放上挂载了 audio 的节点,而这个根节点,可以挂上控制音乐的脚本。

如果不想用 audioSource,可以试试 audioEngine.preload, 或者在正式播放前,先把音量改成0,然后播放一次,马上暂停。

上述的方法都可能因为不同平台的对音频的支持方式有些差异~不过应该没啥大问题~

安卓微信上测试的
只强制webAudio好像没什么影响,audioSource组件勾选preload可以解决音效延迟问题;
现在主要的问题是背景音乐的延迟问题,试过以下方法:强制使用webaudio,按你说的preload,或直接播放。都还是存在延迟的问题,可能和手机处理音频的能力也有关吧。

音效、音乐播放延迟问题,好像是跟浏览器内核有关,你试试安卓QQ浏览器,它使用的是X5内核。