欢迎光临,了解微信小程序开发,就上易用通!

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

发布:2018-01-30 10:15浏览: 来源:网络 作者:cola

想做个录音机,第一步就卡在麦克风动画这里了.

先上gif.再吐槽.

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

① 上面gif中声波的动画是个半成品.没有循环播放.在微信小程序的开发文档上找了很久,也没找到循环模式的参数设置.用setInterval()并不执行动画.我在 微信小程序文档 动画最下面找到这么一行字.这个锅是不是可以甩出去了?

ps:如果有同学能实现动画循环,一定告诉我.

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

② 麦克风里面是个帧动画.没有前端的基础,只能用非主流的办法凑合了.

用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;



}





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。