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


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 相关文章推荐
js自带函数备忘 数组
Dec 29 Javascript
jQuery UI-Draggable 参数集合
Jan 10 Javascript
js调用webservice中的方法实现思路及代码
Feb 25 Javascript
javascript打印html内容功能的方法示例
Nov 28 Javascript
浅谈jquery中delegate()与live()
Jun 22 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
Jan 23 Javascript
使用Bootstrap打造特色进度条效果
May 02 Javascript
javascript 作用于作用域链的详解
Sep 27 Javascript
vue组件父与子通信详解(一)
Nov 07 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
Jun 15 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 Javascript
微信小程序实现聊天室功能
Jun 14 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
深入理解ES6中let和闭包
2018/02/22 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
python连接数据库的方法
2017/10/19 Python
python中模块的__all__属性详解
2017/10/26 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
python生成器推导式用法简单示例
2019/10/08 Python
python dumps和loads区别详解
2020/02/04 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
教师自荐信
2013/12/10 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
Golang中interface{}转为数组的操作
2021/04/30 Golang
python基础之文件处理知识总结
2021/05/23 Python
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server