H5音频如何正确卸载?

cc.loader.load(url)
可以预加载音频文件

音频文件加载过多占用浏览器上百兆内存(50个mp3音效/BGM)
问题是
audioEngine.uncache不能使内存降低?

请问音频应该如何正确卸载?

webAudio与domAudio模式有哪些区别

release: function (asset) { if (Array.isArray(asset)) { AutoReleaseUtils.autoRelease(this, asset); } else if (asset) { var id = this._getReferenceKey(asset); var item = this.getItem(id); if (item) { var removed = this.removeItem(id); asset = item.content; // TODO: AUDIO if (asset instanceof cc.Asset) { if (CC_JSB && asset instanceof cc.SpriteFrame && removed) { // for the "Temporary solution" in deserialize.js asset.release(); } var urls = asset.rawUrls; for (var i = 0; i < urls.length; i++) { this.release(urls[i]); } } else if (asset instanceof cc.Texture2D) { cc.textureCache.removeTextureForKey(item.url); } } } },
CCLoader源码 TODO?

再顶!d=====( ̄▽ ̄*)b一下 求大哥们解答

同求~~

1.7版本,audioEngine.uncache 在chrome上试验确实没有释放掉内存,加载是直接用audioEngine.play传入url加载的。

可以在 cc.loader._cache 看看音频文件是不是还在,如果还在,需要调用一次 cc.loader.release 接口释放
如果这里面都不在了,就需要等浏览器自己释放了。

webaudio 是调用浏览器的 webaudio 接口进行音频播放的模式。

domaudio 则是用 标签进行加载和播放的模式。

这个改法只能作为临时方案吧, 因为用户调用了audioEngine的play, 之后uncache, 其中根本没有cc.loader什么事儿啊, 如果audioEngine的play内部调用了cc.loader去加载, 那也应该uncache的里面去cc.loader卸载.
请问引擎有修改这里的计划吗?

这个问题官方有解决吗

webAudio与domAudio模式有哪些区别参考https://www.jianshu.com/p/5737a9185ed3

1赞