微信小程序開發背景音樂的開關控制實現以及思路

Qrun 2020-04-06 8106

微信小程序開發中某些場景會需要用到背景音樂,然而如果讓音樂一直播放會對某些用戶在某些環境產生不良體驗,讓用戶去調整手機音量是不友好操作體驗開發思路,增加背景音樂的開關控制則是比較理想的實現方法。

如作者在問答小程序中的答題環節增加了背景音樂,接下來分析實現。


首先需要設計出控制開關的按鈕

我以字體圖標作為開關,如下圖:


當然開發者也可以使用圖片實現。


其次找到適合當前場景使用的背景音樂

音樂是有版權的,需注意,可以取得授權后使用,找背景音樂時盡量控制源文件大小,超過200K的源文件在網絡不佳時可能會造成首次加載時間過久,影響用戶體驗,一般播放時長不超過1分鐘,可以設計成循環播放。


微信小程序代碼實現
本人把播放源碼放在公共utils.js里


utils.js代碼載圖:


開關實現函數大同小異,參考以下



公共庫代碼實現完畢,然后在場景中實現:


在場景引入公共庫文件

const Utils = require('../../utils/util.js');

這個bgmusic是頁面的初始數據控制開關的

Page({data: {    bgmusic: true    }

在onLoad: function( ) 添加如下代碼, 存儲緩存變量,避免使用局部變量重新加載就需要用戶重新設置

var music = wx.getStorageSync('user_music');
if (music == 0) that.setData({ bgmusic:false}) 
else that.setData({ bgmusic: true })

當用戶最小化微信時或重新返回微信小程序時的音樂控制,實現方法如下

在onShow: function () {}中添加如下代碼

var that = this;if (that.data.bgmusic) {      Utils.playRoomVoice();    }else    {      that.setdata({        bgmusic:false      })    }

onHide: function () {}中代碼:

Utils.stopRoomVoice();

onUnload: function () {}中代碼:

Utils.stopRoomVoice();

bindtap事件,用戶操作控制代碼實現:

music: function () {
    var that = this;
    if (that.data.bgmusic) {
      Utils.stopRoomVoice();
      that.data.bgmusic = false;
      that.setData({
        bgmusic: false,
      });
      wx.setStorageSync('user_music', 0);
    } else {
      Utils.playRoomVoice();
      that.data.bgmusic = true;
      that.setData({
        bgmusic: true,
      });
      wx.setStorageSync('user_music', 1);
    }
  }

wxml代碼

 

效果如下:


背景音樂開


背景音樂關

以上是微信小程序背景音樂設計的基礎代碼,如有不完善地方,敬請指點,測試效果可以直接掃描以下二維碼: