请稍等 ...
×

采纳答案成功!

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

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

3回答

慕虎5376285 2018-02-03 23:40:25

监听全局的 不论它放到哪里 只要被触发一次  就会一直监听

0 回复 有任何疑惑可以回复我~
小小祭司 2017-12-24 17:29:29

你好:

第一步:我们先验证下onLoad会不会重新加载,直接在onLoad中打印一行测试代码:

console.log("测试");

然后反复点击播放/关闭,查看Console,发现除了加载的时候打印了一行,说明onLoad并没有执行多次。

https://img1.sycdn.imooc.com//szimg/5a3f7254000182ba04910101.jpg

第二步:我们在wx.onBackgroundAudioPlay和wx.onBackgroundAudioPause打个断点,看是什么情况,发现也是只在加载的时候停顿了下,说明也是只加载一次。再让我们看下,还有什么是和主控开关有关联的?判断是否播放的isPlayingMusic?

我们在wx.onBackgroundAudioPlay和wx.onBackgroundAudioPause内的setData上打个断点试试,很有意思的发现每次音乐播放器主控开关状态改变,断点都会随着执行。我们可以在这里加个测试代码

https://img1.sycdn.imooc.com//szimg/5a3f72b40001e2b802770133.jpg

https://img1.sycdn.imooc.com//szimg/5a3f72e6000174f904940094.jpg

这就很有趣了,我们看一下完整的方法代码:

wx.onBackgroundAudioPlay(callback)

问题就很显然了,中间的是callback:我们在此写了函数用于修改播放状态,此函数作为回调函数。也就是说每当微信提供的音乐播放器主控状态被监听到了,就会执行改变播放状态的回调函数。

综上所述:不是onLoad多次加载,而是回调函数被执行而已。

(看到问题就顺手解决一下,目的是为了更深入的了解知识点。比较唐突,见谅。)


0 回复 有任何疑惑可以回复我~
7七月 2017-11-13 02:17:56

可以把代码贴出来看看吗

0 回复 有任何疑惑可以回复我~
  • bby365 #1
    老师,监听播放事件放在onload事件中,为什么点击主控开关时,会触发onload事件了?
    回复 有任何疑惑可以回复我~ 2017-11-19 16:55:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信