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


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 相关文章推荐
JQuery 绑定事件时传递参数的实现方法
Oct 13 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
Aug 08 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
DOM 高级编程
May 06 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
JavaScript数组的一些奇葩行为
Jan 25 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
微信小程序 页面传参实例详解
Nov 16 Javascript
js控制台输出的方法(详解)
Nov 26 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
vue使用nprogress实现进度条
Dec 09 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即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
js实现弹窗效果
2020/08/09 Javascript
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
《鞋匠的儿子》教学反思
2014/03/02 职场文书
涨价通知
2015/04/23 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL