微信小程序?qū)崿F(xiàn)錄音時(shí)的麥克風(fēng)動(dòng)畫效果實(shí)例
前言
這個(gè)簡單的麥克風(fēng)demo的創(chuàng)意是來源于“包你說”中的錄音效果,實(shí)現(xiàn)的方式其實(shí)也并不難,但對(duì)于小程序中的簡易動(dòng)畫的使用的確很實(shí)用。
效果
先來看個(gè)demo,gif幀數(shù)比較低,實(shí)際效果和真機(jī)測(cè)試的流暢性還是很OK的

思路
通過setTimeout配合this.sedData來改變image中的src路徑來生成動(dòng)畫。動(dòng)畫的播放以及隱藏則通過wx:if綁定一個(gè)自定義的參數(shù)來控制。下面就直接上代碼。
代碼
html
<view class='animation-talk'>
<image src='../../image/receive{{receiveImg}}.png' wx:if="{{showTalk}}" mode='aspectFill'></image>
</view>
<view>
<image src='../../image/voice{{voiceNum}}-btn.png' bindlongpress="longPress" bindtouchend="endTouch" ></image>
</view>
javascript
var playTalk //錄音動(dòng)畫定時(shí)器
Page({
data:{
showTalk: false, //顯示錄音動(dòng)畫
receiveImg: 3, //按壓播放語音動(dòng)畫
voiceNum: 2, //按壓錄音時(shí)效果圖
config: app.globalData.apiUrl,//demo接口
},
//長按讀語音
longPress() {
var that = this;
that.setData({
voiceNum: 1,
showTalk: true
});
that.animationTalk();
var url = that.data.config;
wx.startRecord({
success(res) {
const tempFilePath = res.tempFilePath; //錄音成功后的文件
wx.saveFile({
tempFilePath: tempFilePath, //保存文件到本地并生成臨時(shí)路徑
success(res) {
wx.uploadFile({ //上傳語音文件到服務(wù)器
url: url,
filePath: res.savedFilePath,
name: 'file',
formData: {
token: that.data.token,
name: 'file'
},
success(res) {
that.setData({
voiceUrl: JSON.parse(res.data).file_url
})
that.receivePage() //校驗(yàn)語音正確率,此步驟未貼出
}
})
}
})
}
})
},
// 播放錄音動(dòng)畫
animationTalk() {
var that = this;
if (!that.data.showTalk) {
that.setData({
receiveImg: 1
});
clearTimeout(playTalk)
} else {
switch (that.data.receiveImg) {
case 1:
that.setData({
receiveImg: 2
})
break
case 2:
that.setData({
receiveImg: 3
})
break
case 3:
that.setData({
receiveImg: 1
})
break
}
setTimeout(function () {
that.animationTalk()
}, 500)
}
},
// 錄音結(jié)束
endTouch() {
var that = this;
wx.stopRecord();
that.setData({
voiceNum: 2,
showTalk: false,
})
},
})
寫在之后
通過this.setData來制造動(dòng)畫事件僅僅適合項(xiàng)目中的簡單動(dòng)畫效果,如若要完成其他動(dòng)畫特效,如我們胡建的中秋博餅的動(dòng)畫,則需要使用更為強(qiáng)大的css3中的動(dòng)畫效果,這一點(diǎn)小程序的支持也是十分給力的。

總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- 微信小程序用戶后臺(tái)定位及錄音授權(quán)及請(qǐng)求示例
- 微信小程序?qū)崿F(xiàn)錄音與音頻播放功能
- 微信小程序?qū)崿F(xiàn)錄音Record功能
- 微信小程序錄音實(shí)現(xiàn)功能并上傳(使用node解析接收)
- 微信小程序?qū)崿F(xiàn)錄音功能
- 微信小程序錄音文件格式silk遇到的問題及解決方法
- 微信小程序錄音與播放錄音功能
- 微信小程序開發(fā)之錄音機(jī) 音頻播放 動(dòng)畫實(shí)例 (真機(jī)可用)
- 微信小程序-圖片、錄音、音頻播放、音樂播放、視頻、文件代碼實(shí)例
- 微信小程序?qū)崿F(xiàn)錄音播放錄音功能
相關(guān)文章
JavaScript?中URL?查詢字符串(query?string)的序列與反序列化的方法
在 JavaScript 中,可以使用?URLSearchParams?對(duì)象來處理 URL 中的查詢字符串,這篇文章主要介紹了JavaScript?中URL查詢字符串(query?string)的序列與反序列化,需要的朋友可以參考下2023-01-01
微信小程序性能優(yōu)化之checkSession的使用
這篇文章主要介紹了微信小程序性能優(yōu)化之checkSession的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03
JavaScript正則表達(dá)式中g(shù)標(biāo)志詳解
正則的思想都是一樣的,但是具體的寫法會(huì)有所不同,下面這篇文章主要給大家介紹了關(guān)于JavaScript正則表達(dá)式中g(shù)標(biāo)志的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
TypeScript在Vuex4中使用TS實(shí)戰(zhàn)分享
這篇文章主要介紹了TypeScript在Vuex4中使用TS實(shí)戰(zhàn)分享,vuex4類型?Api分析和vuex4實(shí)戰(zhàn)兩部分講述,需要的小伙伴可以參考一下2022-06-06
正則表達(dá)式,替換所有HTML標(biāo)簽的簡單實(shí)例
下面小編就為大家?guī)硪黄齽t表達(dá)式,替換所有HTML標(biāo)簽的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11

