1. 程式人生 > >【小程式】小程式評論稽核後傳送彈幕

【小程式】小程式評論稽核後傳送彈幕

小程式彈幕

需求:小程式實現彈幕功能,然後評論的內容需要稽核(需要時間),所以不是及時的出現在彈幕(對我有利)。小程式實現彈幕並不難,主要這次我們的需求並不是使用者點擊發送就馬上出現在視訊上,而是稽核後才能出現。
先看看小程式的video元件和API

VIdeo元件
這裡寫圖片描述
這裡寫圖片描述

API
這裡寫圖片描述

這裡我們要用到danmu-list
這裡寫圖片描述
下面為他的資料格式,包含了內容(text),顏色(color),出現時間(time)

danmuList: [
      {
        text: '第 1s 出現的彈幕',
        color: '#ff0000',
        time: 1
      },
      {
        text: '第 3s 出現的彈幕',
        color: '#ff00ff',
        time: 3
    }]

這裡我最頭疼的是出現時間,我TM怎麼知道你什麼時候出現,又不是實時的。找了一下發現了下面這個事件
這裡寫圖片描述

作用:視訊播放的時候,返回當前播放的時間和視訊的總時長(注意是播放狀態,播放之前是獲取不到這些的)

然後就有了兩種思路:

  • 點擊發送的時候,獲取當前視訊播放的時間,然後一起提交到後臺(最好的辦法)。
  • 獲取總的時間,然後總的時間/通過稽核的評論數,然後分配給每個danmu-listtime(因為要稽核所以就沒有具體要求實時出現,就給平均分配時間了);

想不到的是我用的是第二種(哭笑.png),因為第一種,後臺要改介面,專案多,後臺事也多,就沒讓他改介面。硬鋼第二種。

第二種難點是小程式無法在播放之前獲取到視訊的總時間(需要後臺,後臺當時不清楚怎麼弄),我就直接用bindtimeupdate

事件獲取,利用延遲先拿到總時間計算好每個text所需事件後,在分配給每個danmu-listtime
這裡寫圖片描述
下面就是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讓我們能沒有播放的狀態下直接獲取到視訊的總時長
這裡寫圖片描述