cocos / cocos-engine

Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D/3D games and instant web entertainment.
https://www.cocos.com/en/creator
Other
8.41k stars 1.96k forks source link

处理小游戏环境中音频的内存泄漏 #2409

Closed jareguo closed 6 years ago

jareguo commented 6 years ago

@pandamicro commented on Mon Jan 29 2018

反馈来自于子龙

https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/ability/audio.html?t=2018115

audio downloader 中的 Audio 对象需要根据微信 API 进行释放处理


@knoxHuang commented on Tue Jan 30 2018

这里是因为在每次播放的时候,会通过 document.createElement('audio') 进行创建 wx.createInnerAudioContext() 对象,然而 weapp-adapter.js 里面创建出来的 element 对象并没有暴露 destroy 的接口,无法再音效停止的时候进行销毁 innerAudioContext 对象

目前子龙的解决方案是: GC,最好方案还是修改 weapp-adapter 暴露 destroy 接口


@jareguo commented on Tue Jan 30 2018

为什么不能修改 weapp-adapter?


@pandamicro commented on Tue Jan 30 2018

https://github.com/cocos-creator/weapp-adapter weapp adapter 的仓库,以后的修改记录在这里


@jareguo commented on Mon Mar 05 2018

子龙提供的一个 demo,通过复用音频对象,修复了内存泄露 zilong.zip


@jareguo commented on Wed Mar 07 2018

疑似相同问题 http://forum.cocos.com/t/bug/56875

PPpro commented 6 years ago

小游戏那边并没有实现 setVolume, 只是简单的volume 属性赋值,可以做调节音量的适配 不过一设置音量他就会停止播放 要重新调用play(),,不过这样会重新播放