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


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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
Sep 12 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
Js与下拉列表处理问题解决
Feb 13 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 Javascript
bootstrapfileinput实现文件自动上传
Nov 08 Javascript
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
完美解决iview 的select下拉框选项错位的问题
Mar 02 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
Jul 30 Javascript
Vue formData实现图片上传
Aug 20 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
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
php上传excel表格并获取数据
2017/04/27 PHP
js confirm()方法的使用方法实例
2013/07/13 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
基于Vue制作组织架构树组件
2017/12/06 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
python def 定义函数,调用函数方式
2020/06/02 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
医院护士的求职信
2014/01/03 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
企业安全标语
2014/06/07 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
工程质量保证书
2015/05/09 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL