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


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 相关文章推荐
JS.findElementById()使用介绍
Sep 21 Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 Javascript
jQuery实现的简单提示信息插件
Dec 08 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
Nov 06 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
Dec 11 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 Javascript
react-native滑动吸顶效果的实现过程
Jun 03 Javascript
JS实现动态添加外部js、css到head标签的方法
Jun 05 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 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面向对象编程快速入门
2006/10/09 PHP
FleaPHP的安全设置方法
2008/09/15 PHP
php checkbox 取值详细说明
2010/08/19 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
js href的用法
2010/05/13 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
vue实现文字加密功能
2019/09/27 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python pdb调试方法分享
2014/01/21 Python
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
python文本数据相似度的度量
2018/03/12 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
Python正则表达式学习小例子
2020/03/03 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
班主任个人工作反思
2014/04/28 职场文书
2014年体育工作总结
2014/11/24 职场文书
营运督导岗位职责
2015/04/10 职场文书
被委托人身份证明
2015/08/07 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书