【小程序】小程序评论审核后发送弹幕
小程序弹幕需求:小程序实现弹幕功能,然后评论的内容需要审核(需要时间),所以不是及时的出现在弹幕(对我有利)。小程序实现弹幕并不难,主要这次我们的需求并不是用户点击发送就马上出现在视频上,而是审核后才能出现。先看看小程序的video组件和APIVIdeo组件API这里我们要用到danmu-list下面为他的数据格式,包含了内容(text),颜色(colo...
小程序弹幕
需求:小程序实现弹幕功能,然后评论的内容需要审核(需要时间),所以不是及时的出现在弹幕(对我有利)。小程序实现弹幕并不难,主要这次我们的需求并不是用户点击发送就马上出现在视频上,而是审核后才能出现。
先看看小程序的video
组件和API
VIdeo组件
API
这里我们要用到danmu-list
下面为他的数据格式,包含了内容(text),颜色(color),出现时间(time)
danmuList: [
{
text: '第 1s 出现的弹幕',
color: '#ff0000',
time: 1
},
{
text: '第 3s 出现的弹幕',
color: '#ff00ff',
time: 3
}]
这里我最头疼的是出现时间,我TM怎么知道你什么时候出现,又不是实时的。找了一下发现了下面这个事件
作用:视频播放的时候,返回当前播放的时间和视频的总时长(注意是播放状态,播放之前是获取不到这些的)
然后就有了两种思路:
- 点击发送的时候,获取当前视频播放的时间,然后一起提交到后台(最好的办法)。
- 获取总的时间,然后总的时间/通过审核的评论数,然后分配给每个
danmu-list
的time
(因为要审核所以就没有具体要求实时出现,就给平均分配时间了);
想不到的是我用的是第二种(哭笑.png),因为第一种,后台要改接口,项目多,后台事也多,就没让他改接口。硬钢第二种。
第二种难点是小程序无法在播放之前获取到视频的总时间(需要后台,后台当时不清楚怎么弄),我就直接用bindtimeupdate
事件获取,利用延迟先拿到总时间计算好每个text
所需事件后,在分配给每个danmu-list
的time
。
下面就是danmu-list所需的json数据。
注意:这里的time不支持小数点,小数点的话弹幕是不会出来的,必须是整数
颜色这里我是用封装的随机二进制颜色
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('')
}
##最后强烈建议小程序能给个API让我们能没有播放的状态
下直接获取到视频的总时长
更多推荐
所有评论(0)