老师,为什么这里onLoad函数里监听不起作用,一定要用全局变量呢?

来源:19-18 音乐播放最终章

慕粉3673019

2017-01-08

老师,为什么这里onLoad函数里监听不起作用,一定要用全局变量呢?

onLoad:function(){

        var that = this;

        wx.onBackgroundAudioPlay(function(){

                that.setData({ isPlayingMusic:true })  //  为什么用这句不起作用,一定要去全局设变量?

//  不是点了返回按钮,再重新进入就会又初始化一遍吗?

})

}

写回答

4回答

7七月

2017-01-08

我不太明白不起作用是什么意思,即使你不使用全局变量,一样会起作用,你wxml里是不是绑定的isplay这个变量

0
2
慕粉3673019
非常感谢!
2017-01-08
共2条回复

7七月

2017-01-08

这个音乐播放有一个小bug,建议你看下我 知乎,有多这个bug给出解决方案。说实话。。。这个音乐播放算是,整个项目里最难的了,看起来好像很简单,其实不是。

0
1
慕粉3673019
好的!谢谢老师!!
2017-01-08
共1条回复

慕粉3673019

提问者

2017-01-08

谢谢老师回答! 我问这个是为了解决再次进入页面时,明明音乐还在播放,图片却变回初始状态的问题。

我一开始理解为 再次onLoad 时 wx.onBackgroundAudioPlay函数已经监听到了音乐正在播放,就应该把 isPlayingMusic 设为true了,也就不需要其他设置了。

现在想明白了,wx.onBackgroundAudioPlay  仅能监听“播放音乐” 这个“动作”,不能监听音乐播放的“状态”,所以onload的时候,

 wx.onBackgroundAudioPlay(function(){

                that.setData({ isPlayingMusic:true }) 

}

这段代码不会执行。

换成

wx.getBackgroundAudioPlayerState({

            success : function (res) {

                if (res.status==1) {  that.setData ({ isplaying:true })  }

            }

})

这段代码就行了!

0
0

慕粉3673019

提问者

2017-01-08

不明白

0
0

微信小程序入门与实战(全新版) 超20000人学习的好课

4年同步微信官方迭代,累计20000+人学习, 比微信官方更火爆!

23866 学习 · 6899 问题

查看课程