5

微信小程序开发实战(29):控制背景音乐

 3 years ago
source link: https://blog.csdn.net/nokiaguy/article/details/108414279
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

微信小程序开发实战(29):控制背景音乐

小程序还提供一组用于播放背景音乐的API,背景音乐和普通音乐的区别就是背景音乐在当前页面播放后,即使切换到当前小程序的其他页面,也不会停止播放。但当小程序退出后,背景音乐就会停止播放。

在小程序中,允许播放背景音乐、暂停背景音乐、停止背景音乐和随机定位背景音乐。这4个功能分别由如下4个方法实现。

  • wx. playBackgroundAudio:播放背景音乐
  • wx.pauseBackgroundAudio:暂停背景音乐
  • wx.stopBackgroundAudio:停止背景音乐
  • wx.seekBackgroundAudio:随机定位背景音乐

除此之外,小程序还提供了wx.getBackgroundAudioPlayerState方法用来获取背景音乐状态。这几个方法都需要设置一些属性。这些内容会连同本节的案例一起介绍。

本节要实现一个可以在线播放背景音乐的小程序,主界面如图1所示。

format,png

图1  播放背景音乐的主界面

该小程序用于控制部分由3个<button>组件和一个<slider>组件组成。点击“播放背景音乐”按钮,会播放背景音乐,点击“暂停背景音乐”按钮,会暂停播放背景音乐,再次点击“播放背景音乐”按钮,会继续播放背景音乐,点击“停止背景音乐”按钮,会停止背景音乐的播放。

通过滑动<slider>组件的滑杆,会定位到背景音乐的某一个位置,从该位置继续播放背景音乐。如果在模拟器上测试,在模拟器的下方,会出现一个音乐控制器,可以暂停和继续播放背景音乐。

下面是实现图10-11所示界面的布局代码。

从这段布局代码可以看到,<slider>组件的拖动事件和seek函数绑定,而3个按钮分别和playBackgroundAudio、pauseBackgroundAudio和stopBackgroundAudio函数绑定。由于这些API无法获取背景音乐的时长,所以在布局代码中直接指定了时长(06:41)。<slider>组件的max属性值是401。每一个刻度表示1秒。06:41的时长正好是401秒。

下面是完整的JavaScript代码。

'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46'

我们可以从如下几点理解这段代码。

  • wx.playBackgroundAudio方法支持在线播放背景音乐,通过dataUrl属性指定在线背景音乐的Url
  • 这里使用app.globalData.backgroundAudioPlaying变量保存背景音乐的播放状态。其中app.globalData是全局作用域。由于背景音乐对于当前小程序来说是全局的,所以要求即使播放背景音乐的当前窗口关闭,播放状态变量仍然有效,所以需要将这些相对于当前小程序是全局的变量放到app.globalData中
  • 本例使用了JavaScript中标准的定时器来获取背景音乐播放的当前位置,每500毫秒通过wx.getBackgroundAudioPlayerState方法获取一次背景音乐播放的位置

对本文感兴趣,可以加李宁老师微信公众号(unitymarvel):

format,png

关注  「极客起源」  公众号,获得更多免费技术视频和文章。

format,png


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK