加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

小程序实现录音时的麦克风动画效果

发布时间:2020-12-14 19:18:54 所属栏目:资源 来源:网络整理
导读:前言 这个简单的麦克风demo的创意是来源于“包你说”中的录音效果,实现的方式其实也并不难,但对于小程序中的简易动画的使用的确很实用。 效果 先来看个demo,gif帧数比较低,实际效果和真机测试的流畅性还是很OK的 #思路通过setTimeout配合this.sedData来

前言

这个简单的麦克风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中的动画效果,这一点小程序的支持也是十分给力的。



(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读