小程序?qū)崿F(xiàn)feed流(一拖三的組件技巧)

小程序:一拖三視頻組件&setData使用技巧

  1. 視頻預(yù)加載

  2. 視頻實(shí)例復(fù)用

  3. 視頻預(yù)加載

  4. autoplay自動(dòng)播放觸發(fā)加載

  5. bindplay在播放開始后暫停播放
    前體:預(yù)加載的視頻既要顯示,又要不顯示。

如果video標(biāo)簽渲染時(shí)是隱藏的,則不會(huì)觸發(fā)自動(dòng)播放
隱藏的幾個(gè)例子:

  • 'display'為'none';
  • 'width'或'height'為0;
  • 'wx:if="{{false}}"'
  1. 視頻預(yù)加載
    所以需要在屏幕之外顯示視頻元素:
<view
  class="videos"
  style="transform:translateY({{videoScrollY}}px)"
>
<video
  wx.for="{{videos}}"
  wx.key="{{item.rowKey}}"
  bindPlay="bindPlay"
  autoPlay
>
</video>
</view>
  1. 視頻實(shí)例復(fù)用
    關(guān)鍵點(diǎn):
    視頻列表索引
    當(dāng)前播放視頻
    預(yù)加載視頻
    包含3個(gè)video的視頻列表

  2. 當(dāng)前播放的視頻索引 index = activeIndex % 3

  3. 預(yù)加載索引 preIndex = (activeIndex + 1) % 3

let preIndex = Math.min(list.length - 1, Math.max(0, (activeIndex + direction)));

this.setData({
  ['videos[${preIndex % 3}]']: list[preIndex],
  videoScrollY: -windowHeight * (activeIndex % 3),
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容