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


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 相关文章推荐
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
Apr 16 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
js实现内容显示并使用json传输数据
Mar 16 Javascript
Javascript中常用类型的格式化方法小结
Dec 26 Javascript
jQuery实现可拖拽3D万花筒旋转特效
Jan 03 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 Javascript
layui前端时间戳转化实例
Nov 15 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
Apr 08 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
Aug 22 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
PHP5 安装方法
2006/10/09 PHP
ajax缓存问题解决途径
2006/12/06 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
javascript 网页跳转的方法
2008/12/24 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
python实现dict版图遍历示例
2014/02/19 Python
Python书单 不将就
2017/07/11 Python
Python虚拟环境项目实例
2017/11/20 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
python视频按帧截取图片工具
2019/07/23 Python
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
如何提高MySql的安全性
2014/06/19 面试题
工程总经理工作职责
2013/12/09 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
班训口号大全
2014/06/18 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
个人股份转让协议书范本
2014/10/26 职场文书