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


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 相关文章推荐
Prototype使用指南之string.js
Jan 10 Javascript
使用简洁的jQuery方法实现隔行换色功能
Jan 02 Javascript
通过复制Table生成word和excel的javascript代码
Jan 20 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
JavaScript数组随机排列实现随机洗牌功能
Mar 19 Javascript
jquery中ajax跨域方法实例分析
Dec 18 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 Javascript
解决vue刷新页面以后丢失store的数据问题
Aug 11 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
JS常用函数使用指南
2014/11/23 Javascript
js实现进度条的方法
2015/02/13 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python验证码识别的方法
2015/07/10 Python
详解python调度框架APScheduler使用
2017/03/28 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
八项规定整改方案
2014/02/21 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
会议主持词开场白
2015/05/28 职场文书