类似平常微信语音聊天的效果…

根据开发的需求,先理清一下思路,点击语音播放与暂停/停止,切换下一个语音等;
小程序对于audio的组件的一些api方法已经不支持了,详情可以参看:微信小程序audio组件文档

嗯嗯,这下子,该怎么办呢?
就如上面提到,小程序1.60版本后,给开发者提供了这个wx.createInnerAudioContext()api…具体使用可以看文档;

“自行测试的时候请使用的正规的音频资源,(部分手机)无法识别非正规的音频哦~”

好的,现在该上代码了!

-wxml结构:

<block wx:for="{{audioArr}}" wx:key="content" wx:for-item="v" wx:for-index="key"><view class='output-audio'><!-- 默认状态 未播放 --><view class='audio' wx:if="{{!v.bl}}" bindtap='audioPlay' data-key="{{key}}" data-id="{{v.id}}" data-bl="{{v.bl}}"><image class='ico' src='{{imgsUrl}}/yuyin-ico.png' /><label class='time'>{{v.time}}</label></view><!-- 当前正在播放状态 --><view class='audio' wx:if="{{v.bl}}" bindtap='audioStop' data-key="{{key}}"  data-id="{{v.id}}" data-bl="{{v.bl}}"><image class='ico' src='{{imgsUrl}}/yuyin-gif.gif' /><label class='time'>{{v.time}}</label></view></view>
</block>

js方法:

// pages/audio/audio.js
const app = getApp();
//创建audio控件
const myaudio = wx.createInnerAudioContext(); Page({/*** 页面的初始数据*/data: {imgsUrl:'../images', //图片路径//音频列表(音频地址src是临时地址,自行找音频资源测试哦...)audioArr: [{id: '1001',src: 'https://m10.music.126.net/20191120180520/bc6a73f966b47b8ac6995d60ff8fa2d9/ymusic/0dd9/d28b/e089/fcbab41f4900212553c5b610c617da2a.mp3',time: '30s',bl: false},{id: '1002',src: 'https://m10.music.126.net/20191120180558/848d69bdaef62ca6a27d69a93445ac63/ymusic/525e/510b/020e/e47dd55bdcfaddfef0475d64d4829b08.mp3',time: '50s',bl: false},],audKey:'',  //当前选中的音频key},//音频播放  audioPlay(e) {var that = this,id = e.currentTarget.dataset.id,key = e.currentTarget.dataset.key,audioArr = that.data.audioArr;//设置状态audioArr.forEach((v, i, array) => {v.bl = false;if (i == key) {v.bl = true;}})that.setData({audioArr: audioArr,audKey: key,})myaudio.autoplay = true;var audKey = that.data.audKey,vidSrc = audioArr[audKey].src;myaudio.src = vidSrc;myaudio.play();//开始监听myaudio.onPlay(() => {console.log('开始播放');})//结束监听myaudio.onEnded(() => {console.log('自动播放完毕');audioArr[key].bl = false;that.setData({audioArr: audioArr,})})//错误回调myaudio.onError((err) => {console.log(err); audioArr[key].bl = false;that.setData({audioArr: audioArr,})return})},// 音频停止audioStop(e){var that = this,key = e.currentTarget.dataset.key,audioArr = that.data.audioArr;//设置状态audioArr.forEach((v, i, array) => {v.bl = false;})that.setData({audioArr: audioArr})myaudio.stop();//停止监听myaudio.onStop(() => {console.log('停止播放');})}, })

方便的话,加个关注哦,博主会不定时更新写的前端案例哟…

如有什么错误或优化的地方,可以提出来,大家一起学习研究…

其他案例:
[js仿淘宝收货地址列表,设置默认地址]
[微信小程序上传多张图片-视频,预览图片]
[微信小程序用canvas生成分享图片]

想学习vue可移步到:vue相关的技术

想学习小程序可移步到:小程序相关的技术

微信小程序,类似微信点击语音播放效果,不会互相干扰播放状态相关推荐

  1. c语言微信小程序编程,微信小程序实现类似微信点击语音播放效果

    本文实例为大家分享了微信小程序类似平常微信语音聊天的效果,不会互相干扰播放状态,供大家参考,具体内容如下 根据开发的需求,先理清一下思路,点击语音播放与暂停/停止,切换下一个语音等: 小程序对于aud ...

  2. 微信小程序点击按钮弹出弹窗_微信小程序实现的点击按钮 弹出底部上拉菜单功能示例...

    本文实例讲述了微信小程序实现的点击按钮 弹出底部上拉菜单功能.分享给大家供大家参考,具体如下: index.wxml 弹出action sheet {{item.txt}} 取消 提示:您选择了菜单{ ...

  3. 微信小程序阻止冒泡点击_微信小程序bindtap事件与冒泡阻止详解

    bindtap就是点击事件 在.wxml文件绑定: cilck here 在一个组件的属性上添加bindtap并赋予一个值(一个函数名) 当点击该组件时, 会触发相应的函数执行 在后台.js文件中定义 ...

  4. 微信小程序:想要点击图片时进行一个放大的功能,写完之后可以正常显示,但点击时图片加载不出来,在此想问一下各路大神有没有解决办法

    微信小程序:想要点击图片时进行一个放大的功能,写完之后可以正常显示,但点击时图片加载不出来,在此想问一下各路大神有没有解决办法 wxml: 在这里插入代码片 <view class='zhanp ...

  5. 【微信小程序】微信小程序基础知识篇

    开发文档 小程序简介 | 微信开放文档 1.微信小程序的环境准备 1.1注册账号 1.2获取APPID 是开发者唯一的身份认证,应用要发布要上线必须提供APPID 1.3开发工具 由于微信小程序自带开 ...

  6. springboot 微信小程序 对接微信支付功能(完整版)

    微信小程序对接微信支付功能 业务流程时序图 JAVA版 1. 项目架构 2. pom.xml配置文件 3. 小程序账号参数配置类 4.JAVA 通用代码 4.1 工具类 4.1.1 IdGen (id ...

  7. 微信小程序:微信商家券的领取

    微信小程序:微信商家券的领取 微信在去年推出了商家券,我前不久才接触,在制作领取程序的时候由于网上相关的资料很少,所以 走了不少弯路. 主要问题 这里可以注意到,微信券的领取需要传递三个参数,坑爹的是 ...

  8. 微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口

    微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口 链接: 点击进入

  9. 微信小程序与公众号区别PHP,微信小程序和微信公众号的区别是什么?

    微信小程序和微信公众号的区别是什么? 2019-08-17 09:10 微信公众号和小程序都是基于微信平台来使用的,而微信自带的十几亿流量也是导流到小程序和公众号上的.越来越多的商家都在运营微信小程序 ...

  10. 微信小程序实现收货地址城市选择效果(添加收货地址)

    先来张效果图 这里主要是城市选择效果,请忽视其他,不要吐槽,谢谢 接下来看一下代码吧 wxml <!--pages/my/my-add-address/index.wxml--> < ...

最新文章

  1. Application runtime path /opt/lampp/htdocs/yii/test/protected/runtime is not valid. 错误
  2. Windows xp 如何查看SID?
  3. 云服务器 VNC 远程连接
  4. python数组元素复制_python的numpy数组 的复制问题?
  5. MDK530编译出现ARM版本不符问题
  6. OpenPCDet:点云3D目标检测开源库
  7. Android Media Framework(1): 总纲
  8. 【Spring-AOP】自动代理类AnnotationAwareAspectJAutoProxyCreator
  9. 《IIS6下运行PHP的方法》
  10. Easypoi 报表模板设置
  11. linux glibc 升级失败,glibc升级失败后的处理过程
  12. oracle 保留池,oracle的内存结构之--查看内存信息+保留池和循环池(摘自文平书)...
  13. 借你的名字,诵念尘世的幸福
  14. Unity高德定位获取天气预报
  15. 游戏产业链:游戏引擎
  16. Linux中xtp文件上传不了,xtp_api_java: 中泰证券xtp java api for win\linux\mac https://xtp.zts.com.cn...
  17. 高清电影播放机选购知识——附30余款播放机资料(1)
  18. “夏邑女首富”刘敏创建的敏涵控股被质疑:坚持做难而正确的事
  19. 基础学编程之三个数顺序排序
  20. 定义一个图形类及其子类,计算其面积和周长

热门文章

  1. Cadence Virtual.Component.CO-Design.v2.2-ISO 1CD(虚拟元件协同设计,VCC)
  2. 力扣881. 救生艇(贪心,双指针)
  3. 如何使用ChatGPT快速构建一个网站模板?
  4. 盘点游戏中那些“欺骗玩家眼睛的技巧”
  5. python删除excel符合条件的行_OpenPyXL如何根据某些条件从Excel文件中删除行?
  6. 采用计算机数控技术的自动控制系统为,数控加工编程技术期末考试综合复习题...
  7. 【预告】网络研讨会|下一代汽车操作系统微内核seL4:seL4基金会主席谈物理系统安全工程实践
  8. mysqlsql怎么比较当前月与去年的这个月的同比_【头条】11月CPI同比上涨4.5%,猪肉供应紧张状况有所缓解...
  9. 工作流(Activiti 6.0)之自由驳回任务实现
  10. 如何解决直播姬电脑手机转播没有声音的问题