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


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直接编辑当前cookie的脚本
Sep 14 Javascript
js DOM模型操作
Dec 28 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
js改变鼠标的形状和样式的方法
Mar 31 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
关于webuploader插件使用过程遇到的小问题
Nov 07 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 Javascript
layui select 禁止点击的实现方法
Sep 05 Javascript
vue监听用户输入和点击功能
Sep 27 Javascript
微信小程序使用echarts获取数据并生成折线图
Oct 16 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&amp;java(一)
2006/10/09 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
浅谈django channels 路由误导
2020/05/28 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
财务总经理岗位职责
2014/02/16 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
项目工作说明书
2014/07/29 职场文书
普通话演讲稿
2014/09/03 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
2015年仓库工作总结
2015/04/09 职场文书
工作失职检讨书范文
2015/05/05 职场文书
浅析Python实现DFA算法
2021/06/26 Python
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
MySQL 服务和数据库管理
2021/11/11 MySQL
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android