微信小程序实现录音时的麦克风动画效果实例
程序员文章站
2023-11-28 13:46:28
前言
这个简单的麦克风demo的创意是来源于“包你说”中的录音效果,实现的方式其实也并不难,但对于小程序中的简易动画的使用的确很实用。
效果
先来看个de...
前言
这个简单的麦克风demo的创意是来源于“包你说”中的录音效果,实现的方式其实也并不难,但对于小程序中的简易动画的使用的确很实用。
效果
先来看个demo,gif帧数比较低,实际效果和真机测试的流畅性还是很ok的
思路
通过settimeout配合this.seddata来改变image中的src路径来生成动画。动画的播放以及隐藏则通过wx:if绑定一个自定义的参数来控制。下面就直接上代码。
代码
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 //录音动画定时器 page({ data:{ showtalk: false, //显示录音动画 receiveimg: 3, //按压播放语音动画 voicenum: 2, //按压录音时效果图 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, //保存文件到本地并生成临时路径 success(res) { wx.uploadfile({ //上传语音文件到服务器 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() //校验语音正确率,此步骤未贴出 } }) } }) } }) }, // 播放录音动画 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) } }, // 录音结束 endtouch() { var that = this; wx.stoprecord(); that.setdata({ voicenum: 2, showtalk: false, }) }, })
写在之后
通过this.setdata来制造动画事件仅仅适合项目中的简单动画效果,如若要完成其他动画特效,如我们胡建的中秋博饼的动画,则需要使用更为强大的css3中的动画效果,这一点小程序的支持也是十分给力的。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。