微信小程序音乐播放器开发


Posted in Javascript onNovember 20, 2019

前言 

这篇文章上一版本是用audio组件开发的播放器,随后反应音频加载速度慢的问题

微信小程序音乐播放器开发

又用小程序内置的背景音乐播放的方法写了一遍,逻辑是一样的逻辑,希望对大家有所帮助!

<view class='audiosBox'>
  <view class="audioOpen" bindtap="listenerButtonPlay" wx:if="{{!isOpen}}">
   <image class='image2' src="../../images/play.png" />
  </view>
  <view class="audioOpen" bindtap="listenerButtonPause" wx:if="{{isOpen}}">
   <image src="../../images/pauses.png" />
  </view>
  <view class='slid'>
   <slider bindchange="sliderChange" block-size="12px" step="2" value="{{offset}}" max="{{max}}" selected-color="#4c9dee" />
   <view>
    <text class='times'>{{starttime}}</text> <!-- 进度时长 -->
    
    <text class='times'>{{duration}}</text>  <!-- 总时长 -->
   </view>
  </view>
</view>

js部分注意了:bug ios 播放时必须加title 不然会报错导致音乐不播放

//index.js
//获取应用实例
const bgMusic = wx.getBackgroundAudioManager()
const app = getApp()
 
Page({
 data: {
  isOpen: false,//播放开关
  starttime: '00:00', //正在播放时长
  duration: '06:41',  //总时长
  src:"http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46"
 },
 // 播放
 listenerButtonPlay: function () {
  var that = this
  //bug ios 播放时必须加title 不然会报错导致音乐不播放
  bgMusic.title = '此时此刻' 
  bgMusic.epname = '此时此刻'
  bgMusic.src = that.data.src;
  bgMusic.onTimeUpdate(() => { 
   //bgMusic.duration总时长 bgMusic.currentTime当前进度
   console.log(bgMusic.currentTime)
   var duration = bgMusic.duration; 
   var offset = bgMusic.currentTime; 
   var currentTime = parseInt(bgMusic.currentTime);
   var min = "0" + parseInt(currentTime / 60);
   var max = parseInt(bgMusic.duration);
   var sec = currentTime % 60;
   if (sec < 10) {
    sec = "0" + sec;
   };
   var starttime = min + ':' + sec;  /* 00:00 */
   that.setData({
    offset: currentTime,
    starttime: starttime,
    max: max,
    changePlay: true
   })
  })
  //播放结束
  bgMusic.onEnded(() => {
   that.setData({
    starttime: '00:00',
    isOpen: false,
    offset: 0
   })
   console.log("音乐播放结束");
  })
  bgMusic.play();
  that.setData({
   isOpen: true,
  })
 },
 //暂停播放
 listenerButtonPause(){
   var that = this
  bgMusic.pause()
  that.setData({
   isOpen: false,
  })
 },
 listenerButtonStop(){
  var that = this
  bgMusic.stop()
 },
 // 进度条拖拽
 sliderChange(e) {
  var that = this
  var offset = parseInt(e.detail.value);
  bgMusic.play();
  bgMusic.seek(offset);
  that.setData({
   isOpen: true,
  })
 },
 // 页面卸载时停止播放
 onUnload() {
  var that = this
  that.listenerButtonStop()//停止播放
  console.log("离开")
 },
})

css部分 

/**index.wxss**/
.audiosBox{
 width: 92%;
 margin: auto;
 height: 130rpx;
 display: flex;
 justify-content: space-between;
 align-items: center;
 background: #f6f7f7;
 border-radius: 10rpx;
}
/*按钮大小 */
.audioOpen{
 width: 70rpx;
 height: 70rpx;
 border: 2rpx solid #4c9dee;
 border-radius: 50%;
 display: flex;
 align-items: center;
 justify-content: center;
 margin-left: 20rpx;
}
 
image{
 width: 30rpx;
 height: 40rpx;
}
.image2{
 margin-left: 10%;
}
/*进度条长度 */
.slid{
 flex: 1;
 position: relative;
}
.slid view{
 display: flex;
 justify-content: space-between;
}
.slid view>text:nth-child(1){
 color: #4c9dee;
 margin-left:6rpx; 
}
.slid view>text:nth-child(2){
 margin-right:6rpx; 
}
slider{
 width: 520rpx;
 margin: 0;
 margin-left: 35rpx;
}
/*横向布局 */
.times{
 width: 100rpx;
 text-align: center;
 display: inline-block;
 font-size: 24rpx;
 color:#999999;
 margin-top: 5rpx;
}
.title view{
 text-indent: 2em;
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
游戏人文件夹程序 ver 4.03
Jul 14 Javascript
Prototype源码浅析 Number部分
Jan 16 Javascript
jquery实现excel导出的方法
Apr 04 Javascript
jQuery添加和删除指定标签的方法
Dec 16 Javascript
Google 地图API资料整理及详细介绍
Aug 06 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
Jul 10 Javascript
vue中的scope使用详解
Oct 29 Javascript
详解如何在Vue里建立长按指令
Aug 20 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
在Vue 中实现循环渲染多个相同echarts图表
Jul 20 Javascript
vue实现简单全选和反选功能
Sep 15 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 Javascript
微信小程序实现音乐播放器
Nov 20 #Javascript
vue移动端模态框(可传参)的实现
Nov 20 #Javascript
微信小程序实现上拉加载功能
Nov 20 #Javascript
微信小程序实现锚点功能
Nov 20 #Javascript
vue实现element表格里表头信息提示功能(推荐)
Nov 20 #Javascript
微信小程序实现时间进度条功能
Nov 17 #Javascript
小程序实现投票进度条
Nov 20 #Javascript
You might like
SMARTY学习手记
2007/01/04 PHP
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
php中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
Python类属性与实例属性用法分析
2015/05/09 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
python机器学习之神经网络(三)
2017/12/20 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
欢送退休感言
2014/02/08 职场文书
八一建军节感言
2014/02/28 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers