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


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 淡入淡出 png图在ie8下有黑色边框的解决方法
Mar 05 Javascript
JS的get和set使用示例
Feb 20 Javascript
Javascript异步编程模型Promise模式详细介绍
May 08 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
JavaScript实现点击按钮切换网页背景色的方法
Oct 17 Javascript
动态设置form表单的action属性的值的简单方法
May 25 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
JS控制只能输入数字并且最多允许小数点两位
Nov 24 Javascript
Vuex模块化应用实践示例
Feb 03 Javascript
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
vue路由实现登录拦截
2021/03/24 Vue.js
预防传染病方案
2014/06/14 职场文书
2014年绿化工作总结
2014/12/09 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
Python&Matlab实现樱花的绘制
2022/04/07 Python