请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,你好,为什么还要修改canplay为play

老师,你好,你在这一节提到快速切换歌曲时,点击暂停,歌曲和歌词都仍然在播放的bug,你通过清除定时器的方法修复了,为什么还要将canplay换为play(play应该是写错了,源码也修正为playing了)呢?这部分没太理解。
按照我的理解就是歌曲在播放前ready了(ready歌曲才可以切换),再点击切换歌曲-》currentSong变化,然后又会将定时器清除,再重新设一个新的定时器,应该不会出问题了呀,为什么一定要确保在播放歌曲后在将ready的状态设置为true?

正在回答 回答被采纳积分+3

插入代码

1回答

ustbhuangyi 2019-05-20 09:38:02

https://developer.mozilla.org/zh-CN/docs/Web/Guide/Events/Media_events 

监听 playing 这个事件可以确保慢网速或者快速切换歌曲导致的 DOM Exception

0 回复 有任何疑惑可以回复我~
  • 提问者 慕用4150088 #1
    老师,你好,我试了一下,我仅在currentSong切换时清除定时器,避免定时器的累积,没有修改ready的时机从canplay到playing,没有发现DOM Exception。
    我认为老师当时的思路可能是这样的:
    1、发现快速切换歌曲时,点击暂停会导致音乐和歌曲无法暂停;
    2、读源码时发现定时器累积的问题,于是修改定时器;
    3、但是修改定时器后,其实是无法解决1、这个bug的,因为这个bug其实只要切换歌曲后1秒内点击暂停歌曲就会触发
    4、老师也发现这个问题了,于是思路变成希望点击切换音乐后1秒后音乐才能播放,播放后才让音乐可以播放(ready的标志位变成true),要实现这个就要让canplay时将ready标志位置为true改为playing时触发。
    5、至此,bug解除
    
    我觉得老师这个处理似乎体验不是太好,因为现在切换音乐必须要等待1秒,无法快速切换音乐,所以我的处理打算变成,保留canplay时将ready标志位置为true,但是点击播放/暂停的键会多了一个限制就是在playing后才能点击
    
    因为老师的回答似乎不是正确的答案,所以这个回答我无法采纳
    回复 有任何疑惑可以回复我~ 2019-06-12 08:16:12
  • ustbhuangyi 回复 提问者 慕用4150088 #2
    canplay 似乎也可以,play 事件是肯定不行的,不过我测试 canplay 和 playing 触发的时机似乎差不多,你在慢网速下也是需要等待的。另外用 playing 就不会存在你说的那种 Bug 了。
    回复 有任何疑惑可以回复我~ 2019-06-12 09:48:09
  • 提问者 慕用4150088 回复 ustbhuangyi #3
    恩恩,好的,我先将课程学完,然后再试一下,现在工作越来越忙,用来思考学习的时间反而变少了
    回复 有任何疑惑可以回复我~ 2019-06-14 07:52:24
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号