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


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 相关文章推荐
innerHTML,outerHTML,innerTEXT三者之间的区别
Jan 28 Javascript
prototype Element学习笔记(篇一)
Oct 26 Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 Javascript
一个JavaScript操作元素定位元素的实例
Oct 29 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
javascript拖拽效果延伸学习
Apr 04 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
Angular弹出模态框的两种方式
Oct 19 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
Sep 05 Javascript
js模拟F11页面全屏显示
Sep 17 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分页类代码
2013/04/02 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
Python中的exec、eval使用实例
2014/09/23 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
Django在Model保存前记录日志实例
2020/05/14 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
python中np是做什么的
2020/07/21 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
蛋糕店的商业计划书范文
2014/01/27 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
公司建议书怎么写
2014/05/15 职场文书
正科级干部考察材料
2014/05/29 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
三方合作意向书范本
2015/05/09 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
windows系统安装配置nginx环境
2022/06/28 Servers