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


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 相关文章推荐
jquery nth-child()选择器的简单应用
Jul 10 Javascript
c#和Javascript操作同一json对象的实现代码
Jan 17 Javascript
跟我学习javascript的执行上下文
Nov 18 Javascript
javascript中Date对象应用之简易日历实现
Jul 12 Javascript
jQuery插件之validation插件
Mar 29 jQuery
easyui关于validatebox实现多重规则验证的方法(必看)
Apr 12 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
mui back 返回刷新页面的实例
Dec 06 Javascript
看看“疫苗查询”小程序有温度的代码
Jul 31 Javascript
小程序自定义单页面、全局导航栏的实现代码
Mar 15 Javascript
微信小程序 搜索框组件代码实例
Sep 06 Javascript
js实现弹幕飞机效果
Aug 27 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基于yii框架实现生成ICO图标
2015/11/13 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
php封装一个异常的处理类
2017/06/08 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
详解Python中的__init__和__new__
2014/03/12 Python
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python对列表的操作知识点详解
2019/08/20 Python
python处理excel绘制雷达图
2019/10/18 Python
python默认参数调用方法解析
2020/02/09 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
大学生自荐书范文
2013/12/10 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
网页美工求职信
2014/02/15 职场文书
网站客服岗位职责
2014/04/05 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
车辆转让协议书
2014/09/24 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
超市员工管理制度
2015/08/06 职场文书
祝酒词范文
2015/08/12 职场文书
团干部培训班心得体会
2016/01/06 职场文书