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


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 动态生成方法的例子
Jul 22 Javascript
javascript学习(一)构建自己的JS库
Jan 02 Javascript
JQuery的Ajax跨域请求原理概述及实例
Apr 26 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
Mar 04 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
js中利用cookie实现记住密码功能
Aug 20 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
JS内置对象和Math对象知识点详解
Apr 03 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
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
jQuery each()小议
2010/03/18 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
Vue多系统切换实现方案
2018/06/05 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
用Python实现KNN分类算法
2017/12/22 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
Python绘制股票移动均线的实例
2019/08/24 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
python实现自动打卡的示例代码
2020/10/10 Python
Python urllib3软件包的使用说明
2020/11/18 Python
sealed修饰符是干什么的
2012/10/23 面试题
施工班组长岗位职责
2014/01/05 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
乡下人家教学反思
2014/02/01 职场文书
秘书英文求职信
2014/04/16 职场文书
分家协议书
2014/04/21 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
优秀大学生自荐信
2015/03/26 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
python基础之文件操作
2021/10/24 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL