微信小程序抖音实战-小视频弹幕

简介:

如果你去抖音只是为了看小视频就少了一大乐趣,评论区才是最有趣的地方,边看视频边看评论的弹幕是不是更有意思

首先看下效果图

6ebe7fab16dbef226db0511f20349ea7ba494e68

预览效果截图


实现思路

把最新的评论以弹幕的方式展示出来,随机生成字体颜色

局部代码变动

1. 增加一个随机颜色生成算法

function getRandomColor({
  let rgb = []
  for (let i = 0; i < 3; ++i) {
    let color = Math.floor(Math.random() * 256).toString(16)
    color = color.length == 1 ? '0' + color : color
    rgb.push(color)
  }
  return '#' + rgb.join('')
}

解读一下: 
Math.random() * 256 用来获取一个 0 - 256 之间的一个随机数
那为什么要乘以256 呢,那是因为rgb的颜色最大是255
Math.floor 取整数,toString(16) 转为 十六进制的颜色码
color = color.length == 1 ? '0' + color : color 补零操作

2. 视频层开启弹幕

  <video id="myVideo" src="{{videoSrc}}" binderror="videoErrorCallback" autoplay='{{true}}' controls='{{false}}' class='slide-image' loop='true' show-progress='false' show-play-btn='false' show-center-play-btn='true' show-fullscreen-btn='false' objectFit='fill' enable-danmu>

增加了一个 enable-danmu 属性

3. 播放视频增加自动发送弹幕

danmuTimer : null,// 弹幕定时器
  previewSubject: function(){
    var subject = this.data.subject;
    if (subject.type == 'video'){
      // 设置视频地址
      this.setData({
        videoSrc: subject.src,
        isHiddenVideofalse
      })
      // 开始播放
      this.videoContext.play();

      // 自动发送弹幕
      var danMus = [];
      var that = this;
      api.loadTalks({
        data: {
          subjectId: that.data.subject.subjectId,
          page1,
          rows60
        },
        successfunction (page{
          danMus = page.content;
          // 先播放最新的弹幕, 评论多的话,需要后台数据排序
          danMus.reverse();
          console.log("获取到 " + danMus.length + " 条评论", danMus)
          that.danmuTimer = setInterval(function ({
            var talk = danMus.pop();
            if (talk){
              console.log("发送弹幕: " + talk.content)
              that.videoContext.sendDanmu({
                text: talk.content, // 评论内容
                color: getRandomColor() // 随机颜色
              })
            }else{
              clearInterval(that.danmuTimer);
            }
          }, 1000)
        }
      });

    }else{
      wx.previewImage({
        urls: [subject.coverUrl],
      })
    }
  },

增加一个弹幕定时器变量,在关闭视频的时候使用
在开始播放的后面先请求后台获取评论数据,然后反转一下
为了pop的时候能出来最新的评论,定时每个1秒发送一个评论
当发送完所有评论后关闭定时器

4. 隐藏视频并关闭弹幕

hidePreview: function () {
    var subject = this.data.subject;
    if (subject.type == 'video') {
      // 停止发送弹幕
      clearInterval(this.danmuTimer);
      // 暂停播放
      this.videoContext.pause();
      // 隐藏视频层
      this.setData({
        isHiddenVideo: true
      })
    }
  },

还不赶紧去试试 !!!留下你们的神评论,让更多的同学看到


原文发布时间为:2018-09-26
本文作者:IT实战联萌
本文来自云栖社区合作伙伴“编程微刊”,了解相关信息可以关注“编程微刊”。
相关文章
|
8月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
8月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
8月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
1383 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
948 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
人工智能 小程序 程序员
【视频测评 DEMO 参考】VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
1152 8
|
人工智能 自然语言处理 小程序
让小程序拥有“视觉之眼“:DeepSeek图像识别实战指南
本文介绍如何通过DeepSeek计算机视觉技术,赋予小程序“看懂世界”的能力。从构建视觉感知系统、训练专属视觉词典到创造会思考的界面,详细讲解了实现智能相册、植物识别器和老旧照片修复等功能的步骤。最后探讨性能优化与安全合规要点,展望未来视觉智能应用的无限可能。
|
人工智能 小程序 API
【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】提供人体、运动、姿态检测的AI能力,支持本地原生识别,无需后台服务,具有速度快、体验好、易集成等优点。本文介绍如何使用该插件实现用户上传视频的运动识别,包括视频解码抽帧和人体识别的实现方法。
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
3341 0
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
1203 0
【微信小程序开发实战项目】——个人中心页面的制作