html5使用canvas實(shí)現(xiàn)彈幕功能示例
最近在著手開(kāi)發(fā)彈幕視頻網(wǎng)站,通過(guò)html5中的canvas實(shí)現(xiàn)了彈幕的功能。
那么閑言碎語(yǔ)不要講,先說(shuō)思路后上代碼。
思路:從頁(yè)面布局上來(lái)說(shuō)就是將一塊畫(huà)布覆蓋在了video標(biāo)簽產(chǎn)生的視頻窗口之上,使用絕對(duì)定位就能實(shí)現(xiàn)了。最重要的就是js控制畫(huà)布上彈幕的顯示了,每一個(gè)彈幕都包裝成一個(gè)對(duì)象,對(duì)象包含的屬性有彈幕應(yīng)該出現(xiàn)的時(shí)間,彈幕的顏色,彈幕是否是移動(dòng)的以及彈幕的文本。彈幕對(duì)象擁有方法包含:設(shè)置彈幕的橫縱坐標(biāo),彈幕的移動(dòng)函數(shù)。實(shí)現(xiàn)的原理,在監(jiān)聽(tīng)視頻開(kāi)始播放的事件,在視頻開(kāi)始播放時(shí)生成一個(gè)定時(shí)器,定時(shí)器每隔一個(gè)時(shí)間去遍歷循環(huán)彈幕對(duì)象數(shù)組并根據(jù)對(duì)象的屬性在畫(huà)布的適當(dāng)位置上繪制出彈幕,計(jì)時(shí)器中除了繪制彈幕的代碼還有執(zhí)行更新彈幕數(shù)組的代碼。