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


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 相关文章推荐
js中字符替换函数String.replace()使用技巧
Aug 14 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
Mar 28 Javascript
chrome下jq width()方法取值为0的解决方法
May 26 Javascript
javascript使用prototype完成单继承
Dec 24 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
Dec 29 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 Javascript
jquery插件开发之选项卡制作详解
Aug 30 jQuery
详解js的作用域、预解析机制
Feb 05 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
Vue使用v-viewer实现图片预览
Oct 21 Javascript
vue实现列表拖拽排序的功能
Nov 02 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+mysql实现简单的增删改查功能
2015/07/13 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
javascript实现的listview效果
2007/04/28 Javascript
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
PHP守护进程实例
2015/03/06 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
python检测远程udp端口是否打开的方法
2015/03/14 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
Python复制文件操作实例详解
2015/11/10 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
python实现按关键字筛选日志文件
2019/12/24 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
建议书标准格式
2014/03/12 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
邓小平理论心得体会
2014/09/09 职场文书
优秀团员事迹材料
2014/12/25 职场文书
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
python图像处理 PIL Image操作实例
2022/04/09 Python
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS