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


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 相关文章推荐
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
JS中表单的使用小结
Jan 11 Javascript
如何获取网站icon有哪些可行的方法
Jun 05 Javascript
分享经典的JavaScript开发技巧
Nov 21 Javascript
学习JavaScript设计模式之迭代器模式
Jan 19 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
React如何解决fetch跨域请求时session失效问题
Nov 02 Javascript
vue实现跳转接口push 转场动画示例
Nov 01 Javascript
vue 实现把路由单独分离出来
Aug 13 Javascript
Vue+element+cookie记住密码功能的简单实现方法
Sep 20 Javascript
Node.js path模块,获取文件后缀名操作
Nov 07 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
php 变量定义方法
2009/06/14 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
python 获取网页编码方式实现代码
2017/03/11 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python 读写文件的操作代码
2018/09/20 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
建筑工程造价专业自荐信
2014/07/08 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
git中cherry-pick命令的使用教程
2022/06/25 Servers