利用API函数和video组件创建视频上下文对象,并利用该对象控制视频播放和发射随机变色弹幕
<!--pages/zj/MultiMedia/video/video.wxml--> <view class='box'> <view class='title'>视频展示</view> <view class="videoLayout"> <video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400" danmu-list="{{danmuList}}" enable-danmu danmu-btn controls> </video> </view> <view> <view class="view">弹幕内容</view> <input bindblur="inputBlur" type="text" placeholder="在此处输入弹幕内容" /> <button type="primary" bindtap="sendDanmu">发送弹幕</button> </view> </view>
danmu-list="{{danmuList}}" enable-danmu danmu-btn controls>danmu-list弹幕列表;enable-danmu能否发送弹幕,默认为true;danmu-btn弹幕按钮; controls视频组件下面默认的控件
// pages/zj/MultiMedia/video/video.js function getRandomColor() { //获取随机颜色函数 let rgb = [] //定义存放RGB三种颜色值分量的数组 for (let i = 0; i < 3; ++i) { //创建3个2位16进制随机数(1种随机颜色) let color = Math.floor(Math.random() * 256).toString(16) //产生0-255之间的16进制随机数 color = color.length == 1 ? '0' + color : color //将1位16进制数变为2位 rgb.push(color) //将2位16进制随机数加入数组 } return '#' + rgb.join('') //将3个数组元素连接成颜色值字符串并返回 } Page({ data: { danmuList: [ { text: '第 1s 出现的弹幕', color: '#ff0000', time: 1 }, { text: '第 3s 出现的弹幕', color: '#ff00ff', time: 3 } ] }, onLoad: function(options) { this.videoCtx = wx.createVideoContext('myVideo')//创建视频上下文 }, inputBlur: function(e) { //input组件失去焦点事件函数 this.inputValue = e.detail.value //获取输入框中的数据 }, sendDanmu: function() { //button组件点击事件函数 this.videoCtx.sendDanmu({ //发送弹幕 text: this.inputValue, //弹幕文本 color: getRandomColor() //弹幕文本颜色 }) } })
let color = Math.floor(Math.random() * 256).toString(16) //局部变量color=16进制的字符串的数,0-1之间的随机数*256,取地板,得出一个0-255之间的随机数,然后转换成16进制的字符串类型
color = color.length == 1 ? '0' + color : color color的长度=1的话,前面补0再加上color,不然color就是两位的16进制数
通过3次循环,得到了三组两位16进制数,通过join将三个数组元素变成一个字符串,然后前面连上一个#,这样就变成了一个随机颜色
this.videoCtx.sendDanmu({ //发送弹幕,通过视频上下文对象,调用sendDanmu这个函数,这个函数的参数是对象类型
text: this.inputValue, //弹幕文本,对象参数有两个属性,一个是弹幕文本
color: getRandomColor() //弹幕文本颜色
})
/* pages/zj/MultiMedia/video/video.wxss */ page { background-color: lightgray; } .videoLayout { margin: 50rpx 0; display: flex; flex-direction: column; align-items: center; } input { height: 80rpx; background-color: white; border: 1px solid blanchedalmond; margin: 10px 0; }
创建视频上下文的API函数
函数VideoContext wx.createVideoContext(string id, Object this) 用于创建视频上下文对象。
参数id为video 组件的 id。this为自定义组件下的当前组件实例。
返回值VideoContext为视频上下文对象。
视频上下文对象VideoContext
主要用于控制视频播放、发送弹幕、设置视频外观等。其主要方法如下所示:
发送弹幕API函数
利用sendDanmu(Object data)可以发射弹幕。参数data为弹幕内容,其属性如下:
video视频组件
主要用于创建视频上下文对象、设置视频源、 控制视频播放、设置视频外观等。其主要属性如下:
创建随机颜色方法
颜色是由红、绿、蓝(即RGB)三种颜色构成,#RRGGBB是颜色值,其中每种颜色值 都在00~FF(即0~255)之间,如果生成3个2位16进制随机数,再和#符号进行连接,就 可 以生成一种随机颜色。