首頁 >微信小程式 >小程式開發 >小程式開發放大淡出的麥克風動畫效果程式碼

小程式開發放大淡出的麥克風動畫效果程式碼

高洛峰
高洛峰原創
2017-03-20 15:31:572336瀏覽

想做錄音機,第一步就卡在麥克風動畫這裡了.

#先上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;  
}


以上是小程式開發放大淡出的麥克風動畫效果程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn