微信小程序——仿抖音短視頻切換效果

一直以爲抖音短視頻切換假如用小程序做的話應該是比較簡單的,直接用swiper實現就好,但在實際寫的過程中才發現沒那麼簡單,要控制的邏輯還是挺多的。

還是先看效果

在這裏插入圖片描述

體驗路徑

自定義組件系列》》仿抖音短視頻切換
在這裏插入圖片描述

代碼邏輯

直接調用自定義的swiper組件就好
調用代碼
js


const videoList = []
Page({
  data: {
    videoList,
    activeId:2,
    isPlaying:true
  },
  onLoad() {
    var that = this
    wx.getSystemInfo({
      success: function(res) {
        that.setData({
          systemInfo:res,
          menuButtonBoundingClientRect: wx.getMenuButtonBoundingClientRect(),
        })
        console.log(res)
      },
    })
    this.setData({
      videoList: [{
        id: 1,
        title: "黃渤",
        desc: "中國女排發佈會,黃渤與鞏俐中國女排發佈會,黃渤與鞏俐",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851354869410.mp4?sign=1f636557effa496e074332e3f4b9b8aa&t=1589851461"
      }, {
        id: 2,
        title: "萊萬多夫斯基",
        desc: "萊萬多夫斯基逆天五子登科",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851322674828.mp4?sign=185e46cba885c4303c7cf5f8658bea9b&t=1589851482"
      }, {
        id: 3,
        title: "駕考那些事",
        desc: "半坡起步是多難",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851312271309.mp4?sign=978660c42305ec67d4c3d603c2ae5a3d&t=1589851496"
      }, {
        id: 4,
        title: "小美女",
        desc: "蹦蹦跳跳",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851307588534.mp4?sign=43cf344e83089348eeeea38d26ba51bb&t=1589851514"
      }, {
        id: 5,
        title: "黃渤",
        desc: "中國女排發佈會,黃渤與鞏俐中國女排發佈會,黃渤與鞏俐",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851354869410.mp4?sign=1f636557effa496e074332e3f4b9b8aa&t=1589851461"
      }, {
        id: 6,
        title: "萊萬多夫斯基",
        desc: "萊萬多夫斯基逆天五子登科",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851322674828.mp4?sign=185e46cba885c4303c7cf5f8658bea9b&t=1589851482"
      }, {
        id: 7,
        title: "駕考那些事",
        desc: "半坡起步是多難",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851312271309.mp4?sign=978660c42305ec67d4c3d603c2ae5a3d&t=1589851496"
      }, {
        id: 8,
        title: "小美女",
        desc: "蹦蹦跳跳",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851307588534.mp4?sign=43cf344e83089348eeeea38d26ba51bb&t=1589851514"
      }, {
        id: 9,
        title: "黃渤",
        desc: "中國女排發佈會,黃渤與鞏俐中國女排發佈會,黃渤與鞏俐",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851354869410.mp4?sign=1f636557effa496e074332e3f4b9b8aa&t=1589851461"
      }, {
        id: 10,
        title: "萊萬多夫斯基",
        desc: "萊萬多夫斯基逆天五子登科",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851322674828.mp4?sign=185e46cba885c4303c7cf5f8658bea9b&t=1589851482"
      }, {
        id: 11,
        title: "駕考那些事",
        desc: "半坡起步是多難",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851312271309.mp4?sign=978660c42305ec67d4c3d603c2ae5a3d&t=1589851496"
      }, {
        id: 12,
        title: "小美女",
        desc: "蹦蹦跳跳",
        url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851307588534.mp4?sign=43cf344e83089348eeeea38d26ba51bb&t=1589851514"
      }]
    })
  },
  onPlay(e) {
    // console.log("開始播放",e)
  },
  onShowPause(e){
    this.setData({
      isPlaying: false
    })
  },
  onHidePause(e){
    this.setData({
      isPlaying: true
    })
  },
  onPause(e) {
  },

  onEnded(e) {
    // console.log(e)
  },

  onError(e) {
  },

  onWaiting(e) {
  },

  onTimeUpdate(e) {
  },

  onProgress(e) {
  },
  onChange(e) {
    console.log(e)
    console.log("id",e.detail.activeId)
    this.setData({
      activeId:e.detail.activeId
    })
  },
  onLoadedMetaData(e) {
    console.log('LoadedMetaData', e)
  },
  go2Home() {
    wx.navigateBack({
      delta: 1,
    })
  },
})

wxml

<mp-video-swiper class="video-swiper" video-list="{{videoList}}" bindplay="onPlay" bindpause="onPause" bindtimeupdate="onTimeUpdate" bindended="onEnded" binderror="onError" bindwaiting="onWaiting" bindprogress="onProgress" bindloadedmetadata="onLoadedMetaData"
  bindchange="onChange" bindshowPause="onShowPause" bindhidePause="onHidePause"></mp-video-swiper>
  <image wx:if="{{!isPlaying}}" class="imagePlayer" style="left:{{systemInfo.screenWidth/2-40/2}}px;top:{{systemInfo.screenHeight/2-40/2}}px" src="./player.png">

  </image>
<view class="viewFloat">
  <view class="videoTitle">{{videoList[activeId-1].title}}</view>
  <view class="videoDes">{{videoList[activeId-1].desc}}</view>
</view>
<view class="viewTabContainer">
  <view class="viewTab">首頁</view>
  <view class="viewTab">動態</view>
  <view class="viewTab">商品</view>
  <view class="viewTab">我的</view>
</view>

wxss

@import '../common.wxss';

page{
    background-color: black;
    height: 100%;
}

mp-video-swiper {
    width: 100%;
    height: 100%;
}
.imagePlayer{
  width: 40px;
  height: 40px;
  position: fixed;
  z-index: 1000;
  opacity: 0.6
}
.viewFloat{
  position: fixed;
  display: flex;
  z-index: 100;
  width: 500rpx;
  bottom: 60px;
  color: white;
  margin:20rpx; 
  flex-direction: column

}
.videoTitle{
  font-size: 18px;
  font-weight: 500;

}
.videoDes{
  font-size: 14px;
}
.viewTabContainer{
  position: fixed;
  display: flex;
  justify-content: space-around;
  align-items: center;
  flex-direction: row;
  width: 100%;
  height: 50px;
  border-top: 0.5px solid white;
  bottom: 0;
}
.viewTab{
  color: white;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章