美文网首页让前端飞Web前端之路
WeChat 文章评论页(三)

WeChat 文章评论页(三)

作者: Nian糕 | 来源:发表于2020-03-09 17:31 被阅读0次
Unsplash

本次的系列博文的知识点讲解和代码,主要是来自于 七月老师 的书籍《微信小程序开发:入门与实践》,由个人总结并编写,关于更多微信小程序开发中的各项技能,以及常见问题的解决方案,还请大家购买书籍进行学习实践,该系列博文的发布已得到七月老师的授权许可

授权许可

0 系列文章目录

01 WeChat 从一个简单的“Welcome”页面来开启小程序之旅吧
02 WeChat 文章列表页面(一)
03 WeChat 文章列表页面(二)
04 WeChat 模块、模板与缓存
05 WeChat 文章详情页
06 WeChat 文章评论页(一)
07 WeChat 文章评论页(二)
08 WeChat 文章评论页(三)

1 实现发送语音功能

我们之前已经实现了文字和图片评论功能,接下来实现的语音发送功能,建议大家在真机上运行小程序进行调试,我们在之前的 wxml 文件中已经注册了 recordStartrecordEnd 事件函数,按住录音按钮之后会执行 recordStart 函数,并通过绑定变量 recodingClass 来改变录音按钮的样式,随后调用 wx.startRecord 录音 API,如果录音成功就执行 success 方法,录音失败则执行 fail 方法,无论录音成功还是失败,都将执行 compelte 方法,结束录音我们调用了 wx.stopRecord 方法,若是不调用该方法,那么录音开始 1 分钟后自动结束录音,这种情况大家可自行实践

// pages/post/post-comment/post-comment.js
//开始录音
recordStart: function () {
  let that = this;
  this.setData({
    recodingClass: 'recoding'
  })
  this.startTime = new Date();
  wx.startRecord({
    success: function (res) {
      console.log('success');
      let diff = (that.endTime - that.startTime) / 1000
      diff = Math.ceil(diff)
      //发送录音
      that.submitVoiceComment({ url: res.tempFilePath, timeLen: diff })
    },
    fail: function (res) {
      console.log('fail')
      console.log(res)
    },
    complete: function (res) {
      console.log('complete')
      console.log(res)
    }
  })
},
//结束录音
recordEnd: function () {
  this.setData({
    recodingClass: ''
  });
  this.endTime = new Date()
  wx.stopRecord()
},
//提交录音 
submitVoiceComment: function (audio) {
  let newData = {
    username: "青石",
    avatar: "/images/avatar/avatar-3.png",
    create_time: new Date().getTime() / 1000,
    content: {
      txt: '',
      img: [],
      audio: audio
    },
  }
  //保存新评论到缓存数据库中
  this.dbPost.newComment(newData)
  //显示操作结果
  this.showCommitSuccessToast()
  //重新渲染并绑定所有评论
  this.bindCommentData()
}

2 实现语音暂停播放功能

语音的播放需要满足以下几个播放场景,假设有两条语音—— A 语音和 B 语音,当点击 A 语音时:如果 A 语音处于未播放状态,就开始播放 A 语音;如果 A 语音处于暂停状态,就继续播放 A 语音。当点击 B 语音时:B 语音的行为同上述的 A 语音;无论 A 语音处于何种状态,都能立刻被中断,被中断后,再次点击 A 语音,A 语音将重新开始播放

小程序提供了 wx.playVoice 方法用于播放语音,wx.pauseVoice 方法用于暂停语音播放,wx.stopVoice 方法用于停止语音播放,如果我们调用 wx.pauseVoice 方法暂停语音播放,那么再次调用 wx.playVoice 方法播放同一个文件时,就会从暂停处开始播放;如果想要从头开始播放,需要先调用 wx.stopVoice 方法

wx.playVoice 方法自身会记录上一次播放语音的 url,当我们播放 B 语音时,该方法会自行对比两次播放的 url,如果两次播放的 url 相同,且第一次播放的语音被暂停了,就将继续上一次语音的播放;如果第二次播放的语音和第一次不同,就直接播放新语音

// pages/post/post-comment/post-comment.js
import { DBPost } from '../../../db/DBPost.js'

Page({
  data: {
    ...
    // 保存当前正播放语音的url
    currentAudio: ''
  },
  ...
  playAudio: function (event) {
    let url = event.currentTarget.dataset.url,
        that = this;
    //暂停当前录音
    if (url == this.data.currentAudio) {
      wx.pauseVoice();
      this.data.currentAudio = ''
    }
    //播放录音
    else {
      this.data.currentAudio = url;
      wx.playVoice({
        filePath: url,
        complete: function () {
          //只有当录音播放完后才会执行
          that.data.currentAudio = ''
          console.log('complete')
        },
        success: function () {
          console.log('success')
        },
        fail: function () {
          console.log('fail')
        }
      })
    }
  }
})

3 实现文章阅读计数功能

我们没有在这个项目中实现实时刷新,当我们刷新项目或者下次进入小程序时,文章列表的阅读数才会被更新

// pages/post/post-detail/post-detail.js
Page({
  data: {},
  onLoad: function(options) {
    ...
    this.addReadingTimes()
  },
  ...
  //阅读量+1
  addReadingTimes: function () {
    this.dbPost.addReadingTimes();
  }
})
// db/DBPost.js
//阅读数+1
addReadingTimes() {
  this.updatePostData('reading');
}

该章节的内容到这里就全部结束了,源码我已经发到了 GitHub WeChat_08 上了,有需要的同学可自行下载

End of File

行文过程中出现错误或不妥之处在所难免,希望大家能够给予指正,以免误导更多人,最后,如果你觉得我的文章写的还不错,希望能够点一下喜欢关注,为了我能早日成为简书优秀作者献上一发助攻吧,谢谢!^ ^

相关文章

  • WeChat 文章评论页(三)

    本次的系列博文的知识点讲解和代码,主要是来自于 七月老师 的书籍《微信小程序开发:入门与实践》,由个人总结并编写,...

  • WeChat 文章评论页(一)

    本次的系列博文的知识点讲解和代码,主要是来自于 七月老师 的书籍《微信小程序开发:入门与实践》,由个人总结并编写,...

  • WeChat 文章评论页(二)

    本次的系列博文的知识点讲解和代码,主要是来自于 七月老师 的书籍《微信小程序开发:入门与实践》,由个人总结并编写,...

  • WeChat 文章详情页

    本次的系列博文的知识点讲解和代码,主要是来自于 七月老师 的书籍《微信小程序开发:入门与实践》,由个人总结并编写,...

  • 2019-01-03 json格式

    首页: 详情页: 上传文章图片: 上传文章/继续添加文章: 添加用户: 上传头像: 添加评论 获取文章评论 关注/...

  • Rxjava-订阅和线程切换简单分析

    喜欢的话,评论区留言点赞哦。 Wechat: CoolOriLans 酷奇源语 本篇文章简单分析下 Rxjava...

  • 微信踩坑文章

    1、vue2 spa单页项目实现微信支付2、vue项目修改微信文章标题deboyblog/vue-wechat-t...

  • 2020-01-09 从零开始用Spring Boot开发一个个

    需求明确 根据我们上一篇文章分析的需求,文章页需要有以下功能: 查看文章详情 评论文章 查看已有评论 除了展示文章...

  • 【ACer出品】双十一电脑配购升级小贴士!

    文章 >生活情感>买买买! 阅读量:8510 评论:240 358 79 123240回复,共5页,转到页跳页 正...

  • Django笔记10-文章详情页(2)

    文章详情页 使用 markdown 语法发布文章以及评论功能 Markdown 编辑器  Markdown 的语法...

网友评论

    本文标题:WeChat 文章评论页(三)

    本文链接:https://www.haomeiwen.com/subject/xfrpdhtx.html