微信小程序视频弹幕发送功能的实现


Posted in Javascript onDecember 28, 2020

1. 目录结构

微信小程序视频弹幕发送功能的实现

2. videoDanmu

<!-- 视频区域 -->
<video src="{{src}}"
id='video'
danmu-btn
enable-danmu
danmu-list="{{ danmuList }}"
>
</video>

<!-- 弹幕发送区域 -->
<view class='sendDanmu'>
  <textarea name="" id="" cols="30" rows="10" placeholder="请输入弹幕"
  bindinput="handleDanmuContent" 
  ></textarea>
  <button type='primary' bindtap="handleSendDanmu"> 发送 </button>
</view>

<!-- 是否随机颜色 -->
<view class='selectColor'>
  <text> 随机颜色 </text>
  <switch bindchange='handleChange'></switch>
</view>

<!-- 选择默认颜色 -->

<view class='selectDefaultColor' bindtap="handleGotoSelectColor">
  <text> 选择颜色 </text>
  <view style="background: {{ defaultColor }}"></view>
</view>
/* pages/videoDanmu/videoDanmu.wxss */

#video{
  width: 100%;
  height: calc(750rpx * 225 / 300);
}

.sendDanmu{
  display: flex;
  height: 100rpx;
}

.sendDanmu textarea{
  border: 1px solid #ddd;
  height: 100rpx;
}

.selectColor{
  display: flex;
  justify-content: space-between;
  margin-top: 20rpx;
  border: 1px solid #ddd;
  align-items: center;
}

.selectDefaultColor{
  display: flex;
  justify-content: space-between;
  align-items: center;
  border: 1px solid #ddd;
  margin-top: 20rpx;
  margin-right: 30rpx;
}

.selectDefaultColor view{
  width: 50rpx;
  height: 50rpx;
  background-color: red;
}
// pages/videoDanmu/videoDanmu.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 视频地址
    src:"http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400",
    danmuList:
    [{
     text: '第 1s 出现的弹幕',
     color: '#ff0000',
     time: 1
    }, {
     text: '第 3s 出现的弹幕',
     color: '#ff00ff',
     time: 3
    }], // 初始弹幕列表
    defaultColor: 'red', // 弹幕默认颜色
    isRandomColor: false, // 控制弹幕是否随机颜色

  },

  // 获取弹幕内容
  handleDanmuContent(e){
    this.content = e.detail.value;

  },
  // 随机弹幕颜色
  randomColor(){
    let red = Math.random() * 255;
    let green = Math.random() * 255;
    let blue = Math.random() * 255;
    return `rgb(${red}, ${green}, ${blue})`
  },
  // 发送弹幕
  handleSendDanmu(){
    let color = '';
    // 通过状态值判断是默认颜色还是随机颜色
    if(this.data.isRandomColor){
      color = this.randomColor()
    }else{
      color = this.data.defaultColor
    }
    this.videoContext.sendDanmu({
      text: this.content,
      color
     })
  },
  // 处理弹幕是否随机颜色
  handleChange(e){
    // console.log(e.detail.value)
    this.setData({
      isRandomColor: e.detail.value
    })
  },
  // 跳转到选择颜色页面
  handleGotoSelectColor(){
    wx.navigateTo({
     url: "/pages/selectColor/selectColor",
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // 创建 video 上下文 VideoContext 对象。通过这个对象发送弹幕
    this.videoContext = wx.createVideoContext('video', this)
  }
})

3. selectColor

<view class='color-wrap'>
  <view wx:for="{{ color }}" wx:key='index'
  style="background: {{ item.number }}"
  bindtap="handleGetColor"
  data-color=" {{ item.number }} "
  >
    {{ item.color }}
  </view>
</view>
/* pages/selectColor/selectColor.wxss */

.color-wrap{
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

.color-wrap view{
  width: 100rpx;
  height: 100rpx;
  background-color: red;
  margin-top: 20rpx;
}
// pages/selectColor/selectColor.js
import color from './color'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    color
  },
  // 获取选择的颜色
  handleGetColor(e){
    // console.log(e.currentTarget.dataset.color)
    const color = e.currentTarget.dataset.color;
    // 获取页面栈
    const pages = getCurrentPages()
    const page = pages[0]; // 上一页面
    page.setData({
      defaultColor: color
    })
    // 返回上一页面
    wx.navigateBack({
     delta: 0,
    })
  }
})
export default [
  { key: 1, color: ' 白色 ', number: '#FFFFFF' },
 
  { key: 2, color: ' 红色 ', number: '#FF0000' },
 
  { key: 3, color: ' 绿色 ', number: '#00FF00' },
 
  { key: 4, color: ' 蓝色 ', number: '#0000FF' },
 
  { key: 5, color: ' 牡丹红 ', number: '#FF00FF' },
 
  { key: 6, color: ' 青色 ', number: '#00FFFF' },
 
  { key: 7, color: ' 黄色 ', number: '#FFFF00' },
 
  { key: 8, color: ' 黑色 ', number: '#000000' },
 
  { key: 9, color: ' 海蓝 ', number: '#70DB93' },
 
  { key: 10, color: ' 巧克力色 ', number: '#5C3317' },
 
  { key: 11, color: ' 蓝紫色 ', number: '#9F5F9F' },
 
  { key: 12, color: ' 黄铜色 ', number: '#B5A642' },
 
  { key: 13, color: ' 亮金色 ', number: '#D9D919' },
 
  { key: 14, color: ' 棕色 ', number: '#A67D3D' },
 
  { key: 15, color: ' 青铜色 ', number: '#8C7853' },
 
  { key: 16, color: ' 2号青铜色 ', number: '#A67D3D' },
 
  { key: 17, color: ' 士官服蓝色 ', number: '#5F9F9F' },
 
  { key: 18, color: ' 冷铜色 ', number: '#D98719' },
 
  { key: 19, color: ' 铜色 ', number: '#B87333' },
 
  { key: 20, color: ' 珊瑚红 ', number: '#FF7F00' },
 
  { key: 21, color: ' 紫蓝色 ', number: '#42426F' },
 
  { key: 22, color: ' 深棕 ', number: '#5C4033' },
 
  { key: 23, color: ' 深绿 ', number: '#2F4F2F' },
 
  { key: 24, color: ' 深铜绿色 ', number: '#4A766E' },
 
  { key: 25, color: ' 深橄榄绿 ', number: '#4F4F2F' },
 
  { key: 26, color: ' 深兰花色 ', number: '#9932CD' },
 
  { key: 27, color: ' 深紫色 ', number: '#871F78' },
 
  { key: 28, color: ' 深石板蓝 ', number: '#6B238E' },
 
  { key: 29, color: ' 深铅灰色 ', number: '#2F4F4F' },
 
  { key: 30, color: ' 深棕褐色 ', number: '#97694F' },
 
  { key: 32, color: ' 深绿松石色 ', number: '#7093DB' },
 
  { key: 33, color: ' 暗木色 ', number: '#855E42' },
 
  { key: 34, color: ' 淡灰色 ', number: '#545454' },
 
  { key: 35, color: ' 土灰玫瑰红色 ', number: '#856363' },
 
  { key: 36, color: ' 长石色 ', number: '#D19275' },
 
  { key: 37, color: ' 火砖色 ', number: '#8E2323' },
 
  { key: 38, color: ' 森林绿 ', number: '#238E23' },
 
  { key: 39, color: ' 金色 ', number: '#CD7F32' },
 
  { key: 40, color: ' 鲜黄色 ', number: '#DBDB70' },
 
  { key: 41, color: ' 灰色 ', number: '#C0C0C0' },
 
  { key: 42, color: ' 铜绿色 ', number: '#527F76' },
 
  { key: 43, color: ' 青黄色 ', number: '#93DB70' },
 
  { key: 44, color: ' 猎人绿 ', number: '#215E21' },
 
  { key: 45, color: ' 印度红 ', number: '#4E2F2F' },
 
  { key: 46, color: ' 土黄色 ', number: '#9F9F5F' },
 
  { key: 47, color: ' 浅蓝色 ', number: '#C0D9D9' },
 
  { key: 48, color: ' 浅灰色 ', number: '#A8A8A8' },
 
  { key: 49, color: ' 浅钢蓝色 ', number: '#8F8FBD' },
 
  { key: 59, color: ' 浅木色 ', number: '#E9C2A6' },
 
  { key: 60, color: ' 石灰绿色 ', number: '#32CD32' },
 
  { key: 61, color: ' 桔黄色 ', number: '#E47833' },
 
  { key: 62, color: ' 褐红色 ', number: '#8E236B' },
 
  { key: 63, color: ' 中海蓝色 ', number: '#32CD99' },
 
  { key: 64, color: ' 中蓝色 ', number: '#3232CD' },
 
  { key: 65, color: ' 中森林绿 ', number: '#6B8E23' },
 
  { key: 66, color: ' 中鲜黄色 ', number: '#EAEAAE' },
 
  { key: 67, color: ' 中兰花色 ', number: '#9370DB' },
 
  { key: 68, color: ' 中海绿色 ', number: '#426F42' },
 
  { key: 69, color: ' 中石板蓝色 ', number: '#7F00FF' },
 
  { key: 70, color: ' 中春绿色 ', number: '#7FFF00' },
 
  { key: 71, color: ' 中绿松石色 ', number: '#70DBDB' },
 
  { key: 72, color: ' 中紫红色 ', number: '#DB7093' },
 
  { key: 73, color: ' 中木色 ', number: '#A68064' },
 
  { key: 74, color: ' 深藏青色 ', number: '#2F2F4F' },
 
  { key: 75, color: ' 海军蓝 ', number: '#23238E' },
 
  { key: 76, color: ' 霓虹篮 ', number: '#4D4DFF' },
 
  { key: 77, color: ' 霓虹粉红 ', number: '#FF6EC7' },
 
  { key: 78, color: ' 新深藏青色 ', number: '#00009C' },
 
  { key: 79, color: ' 新棕褐色 ', number: '#EBC79E' },
 
  { key: 80, color: ' 暗金黄色 ', number: '#CFB53B' },
 
  { key: 81, color: ' 橙色 ', number: '#FF7F00' },
 ];

4. 效果图

微信小程序视频弹幕发送功能的实现

颜色选择

微信小程序视频弹幕发送功能的实现

到此这篇关于微信小程序视频弹幕发送功能的实现的文章就介绍到这了,更多相关小程序视频弹幕发送内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js类的静态属性和实例属性的理解
Oct 01 Javascript
js对象数组按属性快速排序
Jan 31 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
js实现五星评价功能
Mar 08 Javascript
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
vue实现文件上传功能
Aug 13 Javascript
模块化react-router配置方法详解
Jun 03 Javascript
vue-autoui自匹配webapi的UI控件的实现
Mar 20 Javascript
React实现todolist功能
Dec 28 #Javascript
mustache.js实现首页元件动态渲染的示例代码
Dec 28 #Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 #Javascript
vue中watch的用法汇总
Dec 28 #Vue.js
浅析vue中的nextTick
Dec 28 #Vue.js
js仿淘宝放大镜效果
Dec 28 #Javascript
JavaScript实现原型封装轮播图
Dec 27 #Javascript
You might like
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
JavaScript函数、方法、对象代码
2008/10/29 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
node.js实现上传文件功能
2019/07/15 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python 中的divmod数字处理函数浅析
2017/10/17 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
python使用thrift教程的方法示例
2019/03/21 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
作息时间调整通知
2015/04/22 职场文书
高中运动会前导词
2015/07/20 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL
使用Apache Camel表达REST服务的方法
2022/06/10 Servers