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


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 相关文章推荐
flash调用js中的方法,让js传递变量给flash的办法及思路
Aug 07 Javascript
JS Loading功能的简单实现
Nov 29 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 Javascript
详解Javascript事件驱动编程
Jan 03 Javascript
JavaScript必知必会(二) null 和undefined
Jun 08 Javascript
Es6 写的文件import 起来解决方案详解
Dec 13 Javascript
微信小程序-滚动消息通知的实例代码
Aug 03 Javascript
Vue隐藏显示、只读实例代码
Jul 18 Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 Javascript
Vue项目中配置pug解析支持
May 10 Javascript
初学node.js中实现删除用户路由
May 27 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
php批量上传的实现代码
2013/06/09 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
jquery中radio checked问题
2015/03/16 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
一百多行python代码实现抢票助手
2018/09/25 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
保密承诺书
2014/03/27 职场文书
车辆工程专业求职信
2014/04/28 职场文书
全国助残日活动总结
2015/05/11 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis