微信小程序> 微信小程序仿微信语音

微信小程序仿微信语音

浏览量:462 时间: 来源:scream刘小贝

搞了这么长时间,第一次写文章。给大家分享个技术难度不高的,主要展示录音功能。

先看一下效果



就是这样,点击底部按钮会产生变化,根据bind:touchstart在触摸时触发开始录音事件,根据bind:touchend会在你结束触摸的时候调用录音结束事件,产生一个临时url。并且根据触摸的时间可以将播放条长度动态调整,录音时间长它的长度就长一点,短了它的宽度就会短一点。下面贴上代码。

// pages/Record/Record.jsPage({  /**   * 页面的初始数据   */  data: {    luStatu:false,//di'bu    list:[],    width:0  },    // 触摸开始  touchStart:function(e){    // console.log('touchStart', e);    var start=e.timeStamp;    var seconds = (start % (1000 * 60)) / 1000;    this.setData({      start: seconds,      luStatu:true,    })    this.recorderManager.start({      format: 'mp3'    });  },  // 触摸结束  touchEnd:function (e) {    // console.log('touchEnd', e);    var start = this.data.start;    var end = e.timeStamp;    var seconds = (end % (1000 * 60)) / 1000;    var shijian = seconds - start;    var width = shijian*4;    this.setData({      end: seconds,      shijian: shijian,      luStatu: false,      width: width    })    this.recorderManager.stop();    console.log('按了' + shijian+'秒');    console.log('width是',width);  },  // 实时监测变化调用这些方法  onShow:function(e){   var that=this;  //  初始化录音对象    this.recorderManager = wx.getRecorderManager();    this.recorderManager.onError(function () {      that.tip("录音失败!")    });    // 录音结束    this.recorderManager.onStop(function (res) {      var list=that.data.list;      var width = that.data.width;      var src = res.tempFilePath;      console.log('list的1是',list)     // console.log(src)      var aa={        src: src,        width: width,        play:false      }      list.push(aa);      console.log('list的2是', list)      that.setData({        list: list      })            // that.tip("录音完成!")      //console.log(list)    });        this.innerAudioContext = wx.createInnerAudioContext();    this.innerAudioContext.onError((res) => {      that.tip("播放录音失败!")    })  },  tip: function (msg) {    wx.showModal({      title: '提示',      content: msg,      showCancel: false    })  },  // 播放录音  audioPlay: function (e) {    var that = this;    var src = e.currentTarget.dataset.src;    if (src == '') {      this.tip("失效")      return;    }    this.innerAudioContext.src = src;    this.innerAudioContext.play();  },})


下面是wxml代码

<view class='body'>   <view class='center'>   <block wx:for="{{list}}">      <view   style='width:{{item.width+200}}rpx' bindtap="audioPlay" data-src="{{item.src}}" class='myLuYin'>录音{{index+1}}</view>   </block>   </view></view><button class="{{luStatu?'btTouch':'bt'}}"  bind:touchstart="touchStart"bind:touchend="touchEnd"  type='primary'>    <text wx:if="{{luStatu}}">松开结束</text> <text wx:else>按住说话 </text>     </button>

以下是css代码

.body{  position: absolute;  padding-bottom: 100rpx;}.bt{  width: 100%;  position: fixed;  bottom: 0;  left: 0;  z-index: 69;  height: 100rpx;}.btTouch{  background: #e2e2e2 !important;  color: #333333 !important;   width: 100%;  position: fixed;  bottom: 0;  left: 0;  z-index: 69;  height: 100rpx;}.myLuYin{   height: 80rpx;  background: greenyellow;  border-radius:6rpx;  margin: 15rpx 0;   text-align: center;  line-height: 80rpx;  font-size: 32rpx;  color: #fff;}.center{  width: 90%;  margin: 0 auto;}


版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎