收藏
回答

当前页面可开关音乐,退出当前页面再放回关闭却关不了怎么解决?

Page({


  /**

   * 页面的初始数据

   */

  data: {

    music: null,

    isPlaying: false,

    switch1Checked: false

  },

  onLoad() {

    const switch1Checked = wx.getStorageSync('switch1Checked') || false; // 从本地存储中读取开关状态

    this.setData({switch1Checked: switch1Checked}); // 设置开关状态

  },

  

  playMusic: function() {

    if (!this.data.music) {

      this.setData({music: wx.createInnerAudioContext()});

    }

    const music = this.data.music;

    music.src = 'http://music.163.com/song/media/outer/url?id=3950105.mp3';

    music.autoplay = true;

    music.loop = true;

    music.play();

    this.setData({isPlaying: true});

    wx.setStorageSync('switch1Checked', true); // 保存开关状态到本地存储

  },

  

  pauseMusic: function () {

    if (this.data.music) {

      this.data.music.pause();

      this.setData({isPlaying:false});

      wx.setStorageSync('switch1Checked', false); // 保存开关状态到本地存储

    } else {

      console.error("无法暂停音乐,因为未创建音频对象");

    }

  },

  

  switch1Change: function (e) {

    if (e.detail.value) {

      this.playMusic();

      this.setData({switch1Checked: true});

    } else {

      this.pauseMusic();

      this.setData({switch1Checked:false});

    }

  },

  

  /**

   * 生命周期函数--监听页面显示

   */

  

  onShow: function () {

    if (this.data.isPlaying) {

      this.playMusic();

    } else {

      

    }

  },


  /**

   * 生命周期函数--监听页面隐藏

   */

  onHide: function() {

    if (this.data.isPlaying) { // 如果正在播放音乐,则暂停音乐并保存状态到本地存储

      this.pauseMusic();

      wx.setStorageSync('switch1Checked', false); // 保存开关状态到本地存储

    } else { // 如果未播放音乐,则不进行任何操作

      // do nothing

    }

  },


})

回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容