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


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与google map api结合使用 控件,监听器
Mar 04 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
Jun 28 Javascript
JS中不为人知的五种声明Number的方式简要概述
Feb 22 Javascript
点击进行复制的JS代码实例
Aug 23 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
ExtJS4 表格的嵌套 rowExpander应用
May 02 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
详细解读AngularJS中的表单验证编程
Jun 19 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Sep 29 Javascript
浅析Vue 生命周期
Jun 21 Javascript
记录一次开发微信网页分享的步骤
May 07 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根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
Python struct.unpack
2008/09/06 Python
python删除文件示例分享
2014/01/28 Python
详解Python中的join()函数的用法
2015/04/07 Python
python实现图片批量压缩程序
2018/07/23 Python
详解Python3 基本数据类型
2019/04/19 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
酒店营销策划方案
2014/02/07 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
小学生毕业评语
2014/12/26 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
创业计划书之面包店
2019/09/17 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android