老师我通过isPause 来判断是不是退出播放器页面前是否按了暂停 如果暂停的话 再进去就不会自动播放 如何实现

来源:4-16 细节处理

weixin_慕仔6263612

2022-08-13



// pages/player/player.js
let musiclist=[];
let nowPlayingIndex=-1;
//获取全局唯一的音频管理器
const backgroundAudioManager=wx.getBackgroundAudioManager()
const app=getApp()
Page({

    /**
     * 页面的初始数据
     */
    data: {
        picUrl:'',
        isPlaying:false ,//false  不播放
        isShow:false ,//flase为隐藏歌词
        lyric:'',
         isSame:false,//  是否为同一首歌
         isPause:false, //歌曲是否暂停
       
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
       console.log(options.musicID);
       nowPlayingIndex=options.index
       musiclist=wx.getStorageSync('musiclist')
       console.log(app.getIsPause());
    //    if(!app.getIsPause()){
        this._loadMusicDetail(options.musicID)
        console.log(app.getIsPause());
    //     if(!app.getIsPause()){
    //         backgroundAudioManager.pause()
    //   }
    //     console.log(app.getIsPause);
    //    }
    // this._loadMusicDetail(options.musicID)
    },
//自定义函数
//将进度条传过来的当前时间(秒数)传递给歌词组件
timeUpdate(event){
    // console.log('event',event);
  this.selectComponent('.lyric').update(event.detail.currentTime)
}

,
//加载音乐详情
_loadMusicDetail(musicId){
    //是否同一首歌曲
        if(musicId == app.getPlayingMusicId()){
            this.setData({
                isSame:true
            })
        }else{
            this.setData({
                isSame:false
            })       
        }
        if(!this.data.isSame){
            //不是同一首歌曲是重头播放
            backgroundAudioManager.stop()
        }
       
    
    let music=musiclist[nowPlayingIndex]
    console.log(music);
  
    wx.setNavigationBarTitle({
      title:music.name,
    })
    this.setData({
        picUrl:music.al.picUrl,
        isPlaying:false
    })
    app.setPlayMusicId(musicId)

    wx.cloud.callFunction({
        name:'music',
        data:{
            musicId,
            $url:"musicUrl"
           
        }
    }).then(res=>{
        console.log(res);
        wx.showLoading({
          title: '歌曲加载中',
        })
    let result=res.result
     if(result.data[0].url==null){
         wx.showToast({
           title: '你不是vip,无权播放',
         })
         return ;
     }
           
                if(!this.data.isSame){
             
                    backgroundAudioManager.src=result.data[0].url;
                    backgroundAudioManager.title=music.name
                    backgroundAudioManager.coverImgUrl=this.data.picUrl
                    backgroundAudioManager.singer=music.ar[0].name
                    backgroundAudioManager.epname=music.al.name
                  }else{
                  console.log(app.getIsPause());
                    if(!app.getIsPause()){
                      backgroundAudioManager.pause()
                    }
                  }
                 
               
               
     
     
    
     this.setData({
         isPlaying:true
     })
     wx.hideLoading();
    wx.cloud.callFunction({
        name:'music',
        data:{
            musicId,
            $url:'lyric'
        
        }
    }).then(res=>{
        console.log(res);
        let lyric='暂无歌词'
        const lrc=res.result.lrc
        if(lrc){
           lyric=lrc.lyric
        }
        this.setData({
                  lyric
        })
    })
    
    })
    
},
togglePlaying(){
    if(this.data.isPlaying){
        this.setData({
           
            isPause:true
        });
        backgroundAudioManager.pause();
    }else{
        this.setData({
           
            isPause:false
        });
        backgroundAudioManager.play();
    }
    this.setData({
        isPlaying:!this.data.isPlaying,
        // isPause:!this.data.isPause
    });
    app.setIsPause(this.data.isPause)
    console.log(app.getIsPause());
},
//上一首
onTrev(){
 nowPlayingIndex--
 if(nowPlayingIndex<0){
     nowPlayingIndex=musiclist.length-1
 }
 this._loadMusicDetail(musiclist[nowPlayingIndex].id)
},
//下一首
onNext(){
    console.log('下一首');
    nowPlayingIndex++
     if(nowPlayingIndex==musiclist.length){
         nowPlayingIndex=0
     }
     this._loadMusicDetail(musiclist[nowPlayingIndex].id) 
},
//是否显示歌词  
  isShow(){
      this.setData({
          isShow:!this.data.isShow
      })

      console.log(this.data.isShow);
  },

  onPlay(){
    this.setData({
        isPlaying:true
    })
  },
  onPause(){
      this.setData({
          isPlaying:false
      })
  },


    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
           this.togglePlaying()
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },
    //自定义方法
    //暂停播放
    
    
})

以上是pages/player



// pages/player/player.js
let musiclist=[];
let nowPlayingIndex=-1;
//获取全局唯一的音频管理器
const backgroundAudioManager=wx.getBackgroundAudioManager()
const app=getApp()
Page({

    /**
     * 页面的初始数据
     */
    data: {
        picUrl:'',
        isPlaying:false ,//false  不播放
        isShow:false ,//flase为隐藏歌词
        lyric:'',
         isSame:false,//  是否为同一首歌
         isPause:false, //歌曲是否暂停
       
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
       console.log(options.musicID);
       nowPlayingIndex=options.index
       musiclist=wx.getStorageSync('musiclist')
       console.log(app.getIsPause());
    //    if(!app.getIsPause()){
        this._loadMusicDetail(options.musicID)
        console.log(app.getIsPause());
        if(app.getIsPause()){
            backgroundAudioManager.pause()
      }
    //     console.log(app.getIsPause);
    //    }
    // this._loadMusicDetail(options.musicID)
    },
//自定义函数
//将进度条传过来的当前时间(秒数)传递给歌词组件
timeUpdate(event){
    // console.log('event',event);
  this.selectComponent('.lyric').update(event.detail.currentTime)
}

,
//加载音乐详情
_loadMusicDetail(musicId){
    //是否同一首歌曲
        if(musicId == app.getPlayingMusicId()){
            this.setData({
                isSame:true
            })
        }else{
            this.setData({
                isSame:false
            })       
        }
        if(!this.data.isSame){
            //不是同一首歌曲是重头播放
            backgroundAudioManager.stop()
        }
       
    
    let music=musiclist[nowPlayingIndex]
    console.log(music);
  
    wx.setNavigationBarTitle({
      title:music.name,
    })
    this.setData({
        picUrl:music.al.picUrl,
        isPlaying:false
    })
    app.setPlayMusicId(musicId)

    wx.cloud.callFunction({
        name:'music',
        data:{
            musicId,
            $url:"musicUrl"
           
        }
    }).then(res=>{
        console.log(res);
        wx.showLoading({
          title: '歌曲加载中',
        })
    let result=res.result
     if(result.data[0].url==null){
         wx.showToast({
           title: '你不是vip,无权播放',
         })
         return ;
     }
           
                if(!this.data.isSame){
                    backgroundAudioManager.src=result.data[0].url;
                    backgroundAudioManager.title=music.name
                    backgroundAudioManager.coverImgUrl=this.data.picUrl
                    backgroundAudioManager.singer=music.ar[0].name
                    backgroundAudioManager.epname=music.al.name
                  }
               
               
     
     
    
     this.setData({
         isPlaying:true
     })
     wx.hideLoading();
    wx.cloud.callFunction({
        name:'music',
        data:{
            musicId,
            $url:'lyric'
        
        }
    }).then(res=>{
        console.log(res);
        let lyric='暂无歌词'
        const lrc=res.result.lrc
        if(lrc){
           lyric=lrc.lyric
        }
        this.setData({
                  lyric
        })
    })
    
    })
    
},
togglePlaying(){
    if(this.data.isPlaying){
        this.setData({
           
            isPause:true
        });
        backgroundAudioManager.pause();
    }else{
        this.setData({
           
            isPause:false
        });
        backgroundAudioManager.play();
    }
    this.setData({
        isPlaying:!this.data.isPlaying,
        // isPause:!this.data.isPause
    });
    app.setIsPause(this.data.isPause)
    console.log(app.getIsPause());
},
//上一首
onTrev(){
 nowPlayingIndex--
 if(nowPlayingIndex<0){
     nowPlayingIndex=musiclist.length-1
 }
 this._loadMusicDetail(musiclist[nowPlayingIndex].id)
},
//下一首
onNext(){
    console.log('下一首');
    nowPlayingIndex++
     if(nowPlayingIndex==musiclist.length){
         nowPlayingIndex=0
     }
     this._loadMusicDetail(musiclist[nowPlayingIndex].id) 
},
//是否显示歌词  
  isShow(){
      this.setData({
          isShow:!this.data.isShow
      })

      console.log(this.data.isShow);
  },

  onPlay(){
    this.setData({
        isPlaying:true
    })
  },
  onPause(){
      this.setData({
          isPlaying:false
      })
  },


    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
           this.togglePlaying()
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },
    //自定义方法
    //暂停播放
    
    
})

以上是app.js
老师我通过isPause 来判断是不是退出播放器页面前是否按了暂停 如果暂停的话 在点进去同一首歌曲就不会自动播放 效果实现不了 试过在调用 _loadMusicDetail方法前 判断 好像不行

写回答

1回答

谢成

2022-08-19

小程序的背景音乐,只要设置了src就会自动播放。

所以可以判断下是不是和之前是同一首歌,然后是同一首歌曲的话不设置src,再看之前状态是否是暂停状态。

0
1
weixin_慕仔6263612
我试过了 src我设置为空字符串,再点进去都是会自动播放
2022-08-19
共1条回复

微信小程序云开发-从0打造云音乐全栈小程序

横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程

1938 学习 · 2768 问题

查看课程