微信小程序实现录音时的麦克风动画效果实例


Posted in Javascript onMay 18, 2019

前言

这个简单的麦克风demo的创意是来源于“包你说”中的录音效果,实现的方式其实也并不难,但对于小程序中的简易动画的使用的确很实用。

效果

先来看个demo,gif帧数比较低,实际效果和真机测试的流畅性还是很OK的

微信小程序实现录音时的麦克风动画效果实例

思路

通过setTimeout配合this.sedData来改变image中的src路径来生成动画。动画的播放以及隐藏则通过wx:if绑定一个自定义的参数来控制。下面就直接上代码。

代码

html

<view class='animation-talk'>
  <image src='../../image/receive{{receiveImg}}.png' wx:if="{{showTalk}}" mode='aspectFill'></image>
 </view>
 <view>
  <image src='../../image/voice{{voiceNum}}-btn.png' bindlongpress="longPress" bindtouchend="endTouch" ></image>
 </view>

javascript

var playTalk //录音动画定时器
 Page({
  data:{
   showTalk: false, //显示录音动画
   receiveImg: 3, //按压播放语音动画
   voiceNum: 2, //按压录音时效果图
   config: app.globalData.apiUrl,//demo接口
  },
  //长按读语音
  longPress() {
   var that = this;
   that.setData({
    voiceNum: 1,
    showTalk: true
   });
   that.animationTalk();
   var url = that.data.config;
   wx.startRecord({
    success(res) {
     const tempFilePath = res.tempFilePath; //录音成功后的文件
     wx.saveFile({
      tempFilePath: tempFilePath, //保存文件到本地并生成临时路径
      success(res) {
       wx.uploadFile({   //上传语音文件到服务器
        url: url,
        filePath: res.savedFilePath,
        name: 'file',
        formData: {
         token: that.data.token,
         name: 'file'
        },
        success(res) {
         that.setData({
          voiceUrl: JSON.parse(res.data).file_url
         })
         that.receivePage() //校验语音正确率,此步骤未贴出
        }
       })
      }
     })
    }
   })
  },
  // 播放录音动画
  animationTalk() {
   var that = this;
   if (!that.data.showTalk) {
    that.setData({
     receiveImg: 1
    });
    clearTimeout(playTalk)
   } else {
    switch (that.data.receiveImg) {
     case 1:
      that.setData({
       receiveImg: 2
      })
      break
     case 2:
      that.setData({
       receiveImg: 3
      })
      break
     case 3:
      that.setData({
       receiveImg: 1
      })
      break
    }
    setTimeout(function () {
     that.animationTalk()
    }, 500)
   }
  },
  // 录音结束
  endTouch() {
   var that = this;
   wx.stopRecord();
   that.setData({
    voiceNum: 2,
    showTalk: false,
   })
  },
 })

写在之后

通过this.setData来制造动画事件仅仅适合项目中的简单动画效果,如若要完成其他动画特效,如我们胡建的中秋博饼的动画,则需要使用更为强大的css3中的动画效果,这一点小程序的支持也是十分给力的。

微信小程序实现录音时的麦克风动画效果实例

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript 多级checkbox选择效果
Aug 20 Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
Jul 27 Javascript
原生js实现tab选项卡切换
Mar 23 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
jQuery自动或手动图片切换效果
Oct 11 jQuery
vue中如何创建多个ueditor实例教程
Nov 14 Javascript
使用javascript做在线算法编程
May 25 Javascript
详解 微信小程序开发框架(MINA)
May 17 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 Javascript
vue+egg+jwt实现登录验证的示例代码
May 18 #Javascript
egg.js的基本使用和调用数据库的方法示例
May 18 #Javascript
inquirer.js一个用户与命令行交互的工具详解
May 18 #Javascript
webpack 代码分离优化快速指北
May 18 #Javascript
如何实现小程序tab栏下划线动画效果
May 18 #Javascript
微信小程序结合Storage实现搜索历史效果
May 18 #Javascript
Fetch超时设置与终止请求详解
May 18 #Javascript
You might like
咖啡的传说和历史
2021/03/03 新手入门
PHP自动更新新闻DIY
2006/10/09 PHP
php获取文件大小的方法
2014/02/26 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
Node.js简单入门前传
2017/08/21 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
玩转Koa之核心原理分析
2018/12/29 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
Notino法国:购买香水和化妆品
2019/04/15 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
《海底世界》教学反思
2014/04/16 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
小学亲子活动总结
2014/07/01 职场文书
补充协议书
2015/01/28 职场文书
2015毕业寄语大全
2015/02/26 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书