请稍等 ...
×

采纳答案成功!

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

this.data的值在一份文件中,值不一样。

老师你好:

 var postId = this.data.currentPostId;
    var postData = postsData.postDataList[postId];

    var musicVO = postData.music;
    var _this = this;
    if (!_this.data.isPlayingMusic) {
      wx.playBackgroundAudio({
        dataUrl: musicVO.url,
        title: musicVO.title,
        coverImgUrl: musicVO.coverImg,
        success: function (res) {
          // success
          _this.setData({
            isPlayingMusic: true,
          });
        },
        fail: function () {
          // fail
        },
        complete: function () {
          // complete
          wx.onBackgroundAudioPause(function (event) {
            _this.setData({
              isPlayingMusic: false,
            });
            app.globalData.g_isPlayingMusic = false;
            app.globalData.g_isPlayingMusicPostId = null;
          });

          wx.onBackgroundAudioPlay(function (event) {
            _this.setData({
              isPlayingMusic: true,
            });
            app.globalData.g_isPlayingMusic = true;
            app.globalData.g_isPlayingMusicPostId = postId;
          })
        }
      });

    }

在 var _this = this; 处 打印 _this.data 的值是当前页面正确显示的json数据。 但是点击播放按钮,到了onBackgroundAudioPlay 回调的时候,_this.data 的值就变成了 上一个打开的页面的json数据了。如果再次点击播放继续到onBackgroundAudioPlay 回调,此时_this.data的值又正确了。

另外,当第一次打开一个页面,点击播放按钮的时候,不会走到onBackgroundAudioPlay的回调。新打开页面播放,或者再次点击当前页播放按钮才会成功回调到onBackgroundAudioPlay 。 只发生在小程序音乐首次播放时。


2个问题,老师帮忙解答一下呀

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

4回答

7七月 2017-01-07 20:57:56

知乎里有一篇文章,音乐播放,看看能不能解决你的问题。

0 回复 有任何疑惑可以回复我~
7七月 2017-01-07 18:50:19

新版本已经改掉了,页面会被unload

0 回复 有任何疑惑可以回复我~
7七月 2017-01-07 18:49:54

老版本里有一个问题,就是 post-detail页面不会被卸载,所以多次进入后,有可能会多次触发 onBackgroundAudioPlay 。这样就造成了this.data会有几个不同的值,但似乎也不是你说的这个问题。

0 回复 有任何疑惑可以回复我~
7七月 2017-01-07 18:41:13

这个确实只看代码看不出来啊,得调试。你可否按照课程一步步的来?还是说你改动了课程的代码?还有就是建议下载项目源文件,对比一下。在同学里下载。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉111045527 #1
    我的代码跟视频里代码是一样的。但是跟网站中提供的源码不一样。目前只是敲到了 6-16,并没有敲完。
    我是在测试播放不同音乐,观察播放按钮状态发现这个问题的。
    就是断点调试发现的。也没有多次走onBackgroundAudioPlay的回调,
    问题的关键是 先进入(1),再进入(2),(2)中的this.data中在不同的位置有不同的值。而且只是在onBackgroundAudioPlay中发生了变化
    回复 有任何疑惑可以回复我~ 2017-01-07 20:21:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信