日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

高性能彈幕效果封裝(Canvas + 原生JS)

freeflydom
2024年10月25日 10:52 本文熱度 1983

前言

6000+門店使用的大屏,主機(jī)配置竟然是Android5.5 + Chrome 78,不支持es6。。。

隨隨便便一個(gè)css動(dòng)畫都可以把頁(yè)面卡成ppt。

開(kāi)發(fā)只給兩天。。。

buff疊滿,還想在頁(yè)面中做websocket,實(shí)現(xiàn)彈幕滿屏播放功能。。。


調(diào)研嘗試了一下,考慮了repaint等因素,用了css的transform:tanslate屬性,頁(yè)面只有兩個(gè)div在移動(dòng)頁(yè)面都卡,無(wú)語(yǔ)了,甚至還開(kāi)啟了gpu加速transform:tanslateZ,一樣卡成ppt,真的是delay no more了

無(wú)奈之下,嘗試了自己最不熟悉的Canvas,沒(méi)想到竟然如此絲滑,把元素調(diào)成100個(gè)也絲毫不影響性能。

 

大家逛街時(shí)估計(jì)都見(jiàn)過(guò)吧哈哈哈


核心優(yōu)勢(shì)

Canvas繪圖

批量渲染:可以在一次繪制循環(huán)中處理所有彈幕,減少瀏覽器重繪次數(shù)。

內(nèi)存效率:不需要為每個(gè)彈幕創(chuàng)建DOM元素,降低內(nèi)存使用。

靈活性:可以輕松實(shí)現(xiàn)復(fù)雜的視覺(jué)效果和碰撞檢測(cè)。

requestAnimationFrame

function animate() {

    // 更新彈幕位置

    updateBarrages();

    // 渲染彈幕

    renderBarrages();

    // 循環(huán)調(diào)用

    requestAnimationFrame(animate);

}


requestAnimationFrame(animate);

與setTimeout或setInterval相比,requestAnimationFrame有以下優(yōu)勢(shì):


與顯示器刷新率同步,通常是60fps,減少丟幀。

在標(biāo)簽頁(yè)不可見(jiàn)時(shí)自動(dòng)暫停,節(jié)省資源。

允許瀏覽器優(yōu)化并合并多個(gè)動(dòng)畫操作,提高性能。


隊(duì)列虛擬列表:突破性能瓶頸

為了處理大量彈幕,實(shí)現(xiàn)了一個(gè)隊(duì)列虛擬列表:

class CanvasBarrage {

    // ...其他代碼


    handleBarrageRenderList() {

        // 移除已經(jīng)離開(kāi)屏幕的彈幕

        this.barrageList = this.barrageList.filter(item => !item.isExit);


        // 添加新的彈幕到渲染列表

        let addList = this.handleBarrageOriginList(this.barrageOriginList);

        addList = this.handleBarragePosition(addList);

        this.barrageList = this.barrageList.concat(addList);


        this.barrageCleanCount = 0;

    }

}


自適應(yīng)

支持px到vw的轉(zhuǎn)換,使彈幕在不同屏幕尺寸下都能正常顯示。


使用介紹

配置參數(shù)

以下是CanvasBarrage類的主要配置參數(shù):

參數(shù)名類型默認(rèn)值描述
idstringnull容器元素的選擇器
barrageListIBarrageItem[][]初始彈幕列表
barrageRownumber5彈幕行數(shù)
barrageSpacenumber50彈幕間隔
toVwbooleanfalse是否轉(zhuǎn)換為vw單位
basePxnumberclientWidth基準(zhǔn)像素值
renderSizenumber50渲染size
fontSizenumber20字體大小
fontFamilystring'Arial'字體族
isRandomFontColorbooleanfalse是否使用隨機(jī)字體顏色
fontColorstring'black'字體顏色
barrageSpeednumber1彈幕速度
renderOverLimitnumber20渲染超出限制數(shù)量
maxLimitnumber200最大渲染數(shù)量


使用方法

const barrageSystem = new CanvasBarrage({

  id: '#video-container',

  barrageList: initialBarrages,

  barrageRow: 10,

  fontSize: 24,

  isRandomFontColor: true

});


barrageSystem.drawBarrage();


// 添加新彈幕

barrageSystem.addBarrage([{ value: '新彈幕內(nèi)容' }]);

?

效果

因?yàn)橐瞥薝I,給大家自定義化,所以效果是最原始樣式


源碼

記得點(diǎn)一個(gè)star

Github鏈接


轉(zhuǎn)自https://juejin.cn/post/7428247498861396022



該文章在 2024/10/25 10:52:25 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

免费看日韩熟妇理论av| 一区二区三区毛片免费| 欧美人人| 操逼口爆一区二区的| 最新地址福利视频| 亚洲超碰麻豆大象| 日日操夜夜操国产一区| 人妻AV/二区| 99大逼网| 青青草精品久久999| 亚洲夜晚福利| 国产亚洲精品三区四区五区| 欧美午夜福利视频精选| 欧美日韩一区三 | 中文字幕在线激情| 网友自拍视频在线| 黄片.com| 日韩欧美成人影院| 午夜啪啪啪啪啪啪啪啪啪啪啪 | 夜夜 3p 日韩 91N| 婷婷婷婷婷婷久干| 夭天干天天射天天添| 卡通一区二区| 日韩欧美性爽视频国产免费| 日本97久久久精品| 成人小说视频精品日韩 | 亚洲 偷拍 中字| 国产伊人自拍大香蕉| 黄频在线免费观看免费| 日韩国产在线不卡| 黄色成人麻豆网站在线观看| 国产_-级大黄| 国际无码字幕| 日韩久久久午夜| 久久精品日产第一区二区三区介绍| 999国产精品一区二区三区。| 人妻av色色中文字幕| 无码色视| 午夜92免费视频| 蜜臀91精品国产| 免费av大片泄漏|