微信小程序开发之麦克风动画 帧动画 放大 淡出


Posted in Javascript onApril 18, 2017

想做个录音机,第一步就卡在麦克风动画这里了.

先上gif.再吐槽.

微信小程序开发之麦克风动画 帧动画 放大 淡出

① 上面gif中声波的动画是个半成品.没有循环播放.在微信小程序的开发文档上找了很久,也没找到循环模式的参数设置.用setInterval()并不执行动画.我在微信小程序文档 动画最下面找到这么一行字.这个锅是不是可以甩出去了?

ps:如果有同学能实现动画循环,一定告诉我.

微信小程序开发之麦克风动画 帧动画 放大 淡出

② 麦克风里面是个帧动画.没有前端的基础,只能用非主流的办法凑合了.

用wx:if{{}}判断js中定义的值是不是等于图片对应的数字来控制图片的显示和隐藏.css中应该有更好的方法.我css基础不牢,就不说了.

上代码:

1.index.wxml

<!--index.wxml--> 
<view class="voice-style" bindtap="startSpeak"> 
<image class="bg-style" src="../../images/voice_icon_speaking_bg_normal.png" ></image> 
<image class="bg-style" animation="{{spreakingAnimation}}" src="../../images/voice_video_loading_0.png"></image> 
<image class="bg-style" animation="{{spreakingAnimation_1}}" src="../../images/voice_video_loading_0.png"></image> 
<image class="bg-style" animation="{{spreakingAnimation_2}}" src="../../images/voice_video_loading_0.png"></image> 
<image class="sound-style" src="../../images/voice_icon_speech_sound_1.png" ></image> 
<image wx:if="{{j==2}}" class="sound-style" src="../../images/voice_icon_speech_sound_2.png" ></image> 
<image wx:if="{{j==3}}" class="sound-style" src="../../images/voice_icon_speech_sound_3.png" ></image> 
<image wx:if="{{j==4}}" class="sound-style" src="../../images/voice_icon_speech_sound_4.png" ></image> 
<image wx:if="{{j==5}}"class="sound-style" src="../../images/voice_icon_speech_sound_5.png" ></image> 
</view>

2.index.js

//index.js 
//获取应用实例 
var app = getApp() 
Page({ 
 data: { 
  spreakingAnimation: {},//放大动画 
  j: 1,//帧动画初始图片 
  isSpeaking: false,//是否在录音状态 
 }, 
 onLoad: function () { 
 }, 
 //点击开始说话 
 startSpeak: function () { 
  var _this = this; 
  if (!this.data.isSpeaking) { 
   speaking.call(this); 
   this.setData({ 
    isSpeaking: true 
   }) 
  } else { 
   //去除帧动画循环 
   clearInterval(this.timer) 
   this.setData({ 
    isSpeaking: false, 
    j: 1 
   }) 
  } 
 }, 
}) 

function speaking() { 
 //话筒帧动画 
 var i = 1; 
 this.timer = setInterval(function () { 
  i++; 
  i = i % 5; 
  _this.setData({ 
   j: i 
  }) 
  return 
 }, 200); 
 //波纹放大,淡出动画 
 var _this = this; 
 var animation = wx.createAnimation({ 
  duration: 1000 
 }) 
 animation.opacity(0).scale(3, 3).step();//修改透明度,放大 
 this.setData({ 
  spreakingAnimation: animation.export() 
 }) 
 setTimeout(function(){ 
  //波纹放大,淡出动画 
 var animation = wx.createAnimation({ 
  duration: 1000 
 }) 
 animation.opacity(0).scale(3, 3).step();//修改透明度,放大 
 _this.setData({ 
  spreakingAnimation_1: animation.export() 
 }) 
 },250) 
  setTimeout(function(){ 
  //波纹放大,淡出动画 
 var animation = wx.createAnimation({ 
  duration: 1000 
 }) 
 animation.opacity(0).scale(3, 3).step();//修改透明度,放大 
 _this.setData({ 
  spreakingAnimation_2: animation.export() 
 }) 
 },500) 
}

3.index.wxss

/**index.wxss**/ 
.voice-style { 
 margin-top: 400px; 
 display: flex; 
 position: relative; 
 flex-direction: column; 
 align-items: center; 
} 
.bg-style { 
 position: absolute; 
 width: 100px; 
 height: 100px; 
} 
.sound-style{ 
 position: absolute; 
 width: 37.6px; 
 height: 60px; 
 margin-top: 20px; 
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
各种效果的jquery ui(接口)介绍
Sep 17 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
Jan 08 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
Apr 16 Javascript
jQuery中事件与动画的总结分享
May 24 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
Nov 01 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
Nov 03 Javascript
ajax级联菜单实现方法实例分析
Nov 28 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
Vue-cli配置打包文件本地使用的教程图解
Aug 02 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
Sep 25 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
Sep 04 Javascript
JavaScript错误处理和堆栈追踪详解
Apr 18 #Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
Apr 18 #Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 #Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 #Javascript
微信小程序实战之自定义toast(6)
Apr 18 #Javascript
Jquery-data的三种用法
Apr 18 #jQuery
微信小程序实战之登录页面制作(5)
Mar 30 #Javascript
You might like
php explode函数实例代码
2012/02/27 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
Python实现完整的事务操作示例
2017/06/20 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
简单了解python PEP的一些知识
2019/07/13 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
工商管理系学生的自我评价分享
2013/11/29 职场文书
五好关工委申报材料
2014/05/31 职场文书
青年文明号口号
2014/06/17 职场文书
出国签证在职证明范本
2014/11/24 职场文书
清洁员岗位职责
2015/02/15 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
校运会通讯稿
2015/07/18 职场文书
创业计划书之书店
2019/09/10 职场文书
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android