背景音乐播放BUG,销毁异常导致的播放异常,里面有修改方案

【异常现象】:1.先播音乐A ,再播音乐B 然后再切回音乐A ,30秒后自动销毁音乐的那个方法会把当前正在播放的音乐A销毁掉。
2.播音乐A,再播音乐B,直接调用销毁方法销毁音乐A  也会导致音乐B播放停止(被销毁)

【异常原因】:H5audio里面dispose方法,通过 _audioCache   获取到的url1对象与url2对象是同一个。
导致的代码逻辑:load方法里面的逻辑:满足条件 (url == ILaya.SoundManager._bgMusic )&&(ad.src != url)就会跑到下方的
if (!ad) 判断中重新塞一遍AudioSound._musicAudio 到  AudioSound._audioCache,销毁背景音乐其实是会销毁当前的播放对象。
【建议方案】:
1.屏蔽背景音乐销毁(audio对象就一个,完全没必要销毁): SoundManager.playMusic方法中_bgMusic移到channel.stop下面。
SoundManager.disposeSoundLater方法开头if(url == SoundManager._bgMusic) return;
2.存背景音乐的_audioCache的key和其他的集合中的背景音乐用同一个key,改变内容前做对象清理,改变背景音乐直接覆盖掉。
 
没必要demo了吧 - -!
 
已邀请:

157*****593

赞同来自: c416288806

这个问题之前我们在源码版中已经修改,下个版本将会同步出去,可以参考一下这个提交记录,https://github.com/layabox/Lay ... 56d06,感谢反馈

c416288806

赞同来自:

SoundManager.playMusic("url1",0);
SoundManager.playMusic("url2",0);SoundManager.playMusic("url1",0);
等待35秒。音乐没了。

c416288806

赞同来自:

想问一下你们官方是给了修改方案也不改你们家BUG的嘛?

要回复问题请先

商务合作
商务合作