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


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 相关文章推荐
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
Mar 02 Javascript
用jQuery打造TabPanel效果代码
May 22 Javascript
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 Javascript
jQuery实现模拟flash头像裁切上传功能示例
Dec 11 Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 Javascript
JS对象深度克隆实例分析
Mar 16 Javascript
Webpack中css-loader和less-loader的使用教程
Apr 27 Javascript
JS代码优化的8点建议
Feb 04 Javascript
解决vuecli3中img src 的引入问题
Aug 04 Javascript
vue实现折线图 可按时间查询
Aug 21 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
中国收音机工业发展史
2021/03/02 无线电
php学习之 数组声明
2011/06/09 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
提高php编程效率技巧
2015/08/13 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
php json相关函数用法示例
2017/03/28 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
让您的菜单不离网站
2006/10/03 Javascript
Code:findPosX 和 findPosY
2006/12/20 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Python单体模式的几种常见实现方法详解
2017/07/28 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
岗位职责定义及内容
2013/11/08 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
暂停营业通知
2015/04/25 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers