【小程式】小程式評論稽核後傳送彈幕
阿新 • • 發佈:2019-01-25
小程式彈幕
需求:小程式實現彈幕功能,然後評論的內容需要稽核(需要時間),所以不是及時的出現在彈幕(對我有利)。小程式實現彈幕並不難,主要這次我們的需求並不是使用者點擊發送就馬上出現在視訊上,而是稽核後才能出現。
先看看小程式的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讓我們能沒有播放的狀態
下直接獲取到視訊的總時長