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


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 相关文章推荐
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 Javascript
jquery简单的拖动效果实现原理及示例
Jul 26 Javascript
javascript自定义startWith()和endWith()的两种方法
Nov 11 Javascript
javascript实现的猜数小游戏完整实例代码
May 10 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
Aug 05 Javascript
深入分析javascript中console命令
Aug 14 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
Dec 12 Javascript
JSON键值对序列化和反序列化解析
Jan 24 Javascript
angular2路由之routerLinkActive指令【推荐】
May 30 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 Javascript
vue实现在线学生录入系统
May 30 Javascript
如何使用jQuery操作Cookies方法解析
Sep 08 jQuery
不刷新网页就能链接新的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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Django 大文件下载实现过程解析
2019/08/01 Python
django将数组传递给前台模板的方法
2019/08/06 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
Python实现上下文管理器的方法
2020/08/07 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
学年自我鉴定范文
2013/10/01 职场文书
高三历史教学反思
2014/01/09 职场文书
学习十八大报告感言
2014/02/04 职场文书
护理专业自荐书
2014/06/04 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python