问题模块 | 框架类型 | 问题类型 | API/组件名称 | 终端类型 | 微信版本 | 基础库版本 |
---|---|---|---|---|---|---|
API和组件 | 小程序 | Bug | wx.createInnerAudioContext | 工具 | 7.0.4 | 2.7.0 |
真机上没啥问题,主要是开发工具上表现差异较大。
问题一,播放结束后,第二次点击播放,TimeUpdate不会回调;
问题二,如果添加了destroy方法之后,会导致TimeUpdate在销毁的过程中报错,如截图。
对于TimeUpdate虽然可以通过Canplay添加pause和play方式临时解决,但是TimeUpdate事件未被销毁,更换地址播放时,会导致之前的音频地址同时也在播放。
调试跟踪看了下,官方对于TimeUpdate的事件处理与其他如Play、Ended等事件处理机制是不一样的,主要是要考虑TimeUpdate每隔250ms执行一次回调,实际上重复注册使用的是同一个事件。
通过WeakMap+随机时间戳字符串的方式进行关联,但是貌似事件注册那里存在问题,注册的实际是undefined,使得off去获取的时候,得到的是undefined,就抛出提示截图的错误。
- 当前 Bug 的表现(可附上截图)
- 预期表现
能够正常实现TimeUpdate回调,以及正常销毁。
- 复现路径
pages/index/index
- 提供一个最简复现 Demo
https://developers.weixin.qq.com/s/BUc5iEmR7J8w