微信小程序实现音频文件播放进度的实例代码


Posted in Javascript onMarch 02, 2020

问题描述

在微信小程序中经常会用到控制文件播放的滑块,通过滑块可控制音频播放进度,下面即用代码实现。

解决方案

首先用.wxml与 .wmss 代码实现进度条的效果,再通过 .js 文件控制进度条的进度和进度条的时间显示。

.wxml中(播放进度结构的代码):

<view class="content-play-progress">
<text>{{play.currentTime}}</text>
<view>
<slider activeColor="#d33a31" block-size="12" backgroundColor="#dadada" value="{{play.percent}}"/>
</view>
<text>{{play.duration}}</text>
</view>

在上述代码中,第五行用到了slider组件,其值为播放进度 play.percent。

.wxss中(播放进度样式的代码) :

.content-play-progress{
display: flex;
align-items: center;
margin: 0 35rpx;
font-size: 9pt;
text-align: center;
}
.content-play-progress>view{
flex: 1;
}

保存上述代码后,运行程序,效果如图:

微信小程序实现音频文件播放进度的实例代码 

图 1   微信小程序进度条的实现

.js中(控制进度条的进度和时间的代码) :

onReady: function(){
this.audioCtx=wx.createInnerAudioContext()
var that=this
//播放失败检测
this. audioCtx.onError(function(){
console.log( ‘ 播放失败: ' +that.audioCtx.src)
})
//播放完成自动换下一曲
this. audioCtx.OnEnded(function(){
that.next()
})
//自动更新播放进度
this. audioCtx.onPlay(function(){
this. audioCtx.onTimeUpdate(function(){
that.setData({
‘ play.duration ' : formatTime(that.audioCtx.duration),
‘ play.currrentTime ' : formatTime(that.audioCtx. currrentTime),
‘ play.percent ' : that.audioCtx. currrentTime /
that.audioCtx.duration*100
})
})
//默认选择第一曲
T his.setMusic(0)
//格式化时间
function formatTime(time){
var minute=Math.floor(time/60)%60;
var second=Math.floor(time)%60
return (minute<10? ' 0 ' +minute:minute)+ ' : ' +
(second<10? ' 0 ' +second:second)
}
})
}

上述代码中,通过调用audioCtx的 onTimeUpdate() 的方法,获取音视频状态信息,并通过 formatTime() 函数处理时间格式,最后渲染到页面实现实时更新效果,效果如图:

微信小程序实现音频文件播放进度的实例代码 

图 2   微信小程序进度条的滑动

在slider组件上绑定 bindchange 事件,可以实现滑动进度条调节音视频文件播放进度,代码示例 :

<slider bindchange= ” sliderChange ” activeColor= ” #d33a31 ” block-size= ” 12 ” backgroundColor= ” #dadada ” value= ” {{play.percent}} ” / >

在.js文件中编写 sliderChange 函数获取用户当前选择的进度,将时间通过 audioCtx 对象的 seek() 方法进行设置,代码示例:

sliderChange: function(e){
var second=e.detail.value* that.audioCtx.duration/100
that.audioCtx.seek(secend)
},

总结

到此这篇关于微信小程序实现音频文件播放进度的实例代码的文章就介绍到这了,更多相关小程序音频文件播放进度内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
js整数字符串转换为金额类型数据(示例代码)
Dec 26 Javascript
jquery获取一个元素下面相同子元素的个数代码
Jul 31 Javascript
Jquery对select的增、删、改、查操作
Feb 06 Javascript
javascript删除元素节点removeChild()用法实例
May 26 Javascript
JS仿淘宝实现的简单滑动门效果代码
Oct 14 Javascript
javascript插件开发的一些感想和心得
Feb 28 Javascript
AngularJS之页面跳转Route实例代码
Mar 10 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
vue如何进行动画的封装
Sep 26 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
May 07 Javascript
vue使用swiper.js重叠轮播组建样式
Nov 14 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 #Javascript
vue学习笔记之slot插槽用法实例分析
Feb 29 #Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 #Javascript
Vue组件化开发之通用型弹出框的实现
Feb 28 #Javascript
在vue项目实现一个ctrl+f的搜索功能
Feb 28 #Javascript
Js实现复选框的全选、全不选反选功能代码实例
Feb 28 #Javascript
基于html+css+js实现简易计算器代码实例
Feb 28 #Javascript
You might like
在php MYSQL中插入当前时间
2008/04/06 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php生成图片验证码的方法
2016/04/15 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
详解vue路由
2020/08/05 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
python调用支付宝支付接口流程
2019/08/15 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
物流管理专业毕业生求职信
2014/03/23 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
小学优秀教师材料
2014/12/15 职场文书
初中作文评语
2014/12/25 职场文书
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python