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


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代码
Jul 01 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 Javascript
node.js中的fs.chmod方法使用说明
Dec 18 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
Jan 23 Javascript
javaScript基础语法介绍
Feb 28 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
微信小程序 地图map详解及简单实例
Jan 10 Javascript
微信小程序 图片加载(本地,网路)实例详解
Mar 10 Javascript
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
详解Node全局变量global模块
Sep 28 Javascript
解决webpack无法通过IP地址访问localhost的问题
Feb 22 Javascript
vant时间控件使用方法详解
Dec 24 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的ajax简单实例
2014/02/27 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
nodeJS微信分享
2017/12/20 NodeJs
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
python的常用模块之collections模块详解
2018/12/06 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
Python绘制股票移动均线的实例
2019/08/24 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python