赞
踩
需求:播放前自定义图片,添加遮罩,添加暂停按钮, 且不显示功能区。点击播放开始显示功能区。左右切换视频需要乱序重排,隐藏掉转发, 点击回到顶部等
左右切换:
播放前:
开始播放:(这个暂停的时候在手机上中间位置实际是有那个三角的暂停键的, 电脑上不显示)
代码
- <!-- 视频列表 -->
- <div class="main">
- <div
- v-for="(item, index) in tab_zy_img
- ? Arts
- : tab_zt_img
- ? special
- : tab_dsp_img
- ? sVideo
- : tab_vlg_img
- ? VLog
- : []"
- :key="item.id"
- class="box"
- >
- <p>{{ item.author }}</p>
- <div class="video_box">
- <!-- poster第一画面 controls播放按钮 autoplay="autoplay" autoplay自动播放 preload预加载 -->
- <!-- :controls="!item.showShade" -->
- <video
- :id="item.v_id"
- width="100%"
- height="100%"
- preload="auto"
- :controls="!item.showShade"
- :poster="item.poster"
- :src="item.v_url"
- playsinline
- webkit-playsinline
- x5-playsinline
- x5-video-player-fullscreen
- x5-video-orientation="portraint"
- ></video>
-
- <!-- 禁止ios在点击视频时自动全屏播放
- webkit-playsinline
- x5-playsinline
- x5-video-player-fullscreen
- x5-video-orientation="portraint" -->
-
- <!-- 蒙层 首次进入显示 -->
- <div v-if="item.showShade" class="video_z"></div>
- <!-- 暂停图标 首次进入显示 -->
- <div
- v-if="item.showZanTing"
- class="video_img"
- @click="playVideo(item, index)"
- ></div>
- <!-- 透明层 -->
- <div
- v-if="showVideoBac"
- class="video_bac"
- @click="playVideo(item, index)"
- ></div>
- </div>
- <p>{{ item.t_name }}</p>
- </div>
- </div>
- <!-- 返回顶部 -->
- <div class="footer"><button @click="toTop"></button></div>
-
- methods: {
-
- // 数组乱序
- randomArray (arr) {
- var stack = []
- while (arr.length) {
- //Math.random():返回 [0,1) 之间的一个随机数
- var index = parseInt(Math.random() * arr.length) // 利用数组长度生成随机索引值
- stack.push(arr[index]) // 将随机索引对应的数组元素添加到新的数组中
- arr.splice(index, 1) // 删除原数组中随机生成的元素
- }
- return stack
- },
-
- // 点击按钮返回顶部
- toTop () {
- var timer = null//时间标识符
- var isTop = true
-
- // 设置定时器
- timer = setInterval(function () {
- var osTop = document.documentElement.scrollTop || document.body.scrollTop
- //减小的速度
- var isSpeed = Math.floor(-osTop / 6)
- document.documentElement.scrollTop = document.body.scrollTop = osTop + isSpeed
- //判断,然后清除定时器
- if (osTop == 0) {
- clearInterval(timer)
- }
- isTop = true//添加在obtn.onclick事件的timer中
- }, 30)
- if (!isTop) {
- clearInterval(timer)
- }
- isTop = false
- },
-
- // 点击播放/暂停
- playVideo (item, index) {
- var video = document.getElementById(item.v_id)
- if (this.video != null && this.video != video) {
- // 上一个点过的视频未暂停直接点了下一个进行播放,此时将上一个视频暂停并添加暂停按钮
- this.video.pause()
- }
- // 记录上个点击的视频的信息
- this.video = video
-
-
- // 点击暂停/播放
- if (video.paused) {
- video.play()
- } else {
- video.pause()
- }
- },
-
-
- // 以下五步是将转发功能隐藏掉
- // 1.获取url
- getlocalUrl () {
- // 獲取 localurl
- this.localurl = location.href.split("#")[0]
- },
- // 2.生成16位随机码
- randomString () {
- // 生成16位隨機碼
- let len = 16
- let $chars = "ABCDEFGHJKMNPQefhijkmnprstwxyz234541425"
- let maxPos = $chars.length
- let pwd = ""
- for (var i = 0; i < len; i++) {
- pwd += $chars.charAt(Math.floor(Math.random() * maxPos))
- }
- this.noncestr = pwd
- },
- // 3.调接口
- getticket () {
- let appId = this.GetQueryString("appId")
- // eslint-disable-next-line no-undef
- axios.get("https://pmd.cctv.cn/cctvwx/getticket?appId=" + appId)
- .then((res) => {
- console.log(res, 'res')
- this.jsapi_ticket = res.data.ticket
- // 獲取 jsapi_ticket 生成簽名
- this.getSignature()
- }).catch((err) => { console.log(err) })
- },
- // 4.生成签名
- getSignature () {
- this.timestamp = new Date().getTime()
- let newString = `jsapi_ticket=${this.jsapi_ticket}&noncestr=${this.noncestr}×tamp=${this.timestamp}&url=${this.localurl}`
- // eslint-disable-next-line no-undef
- let SHA1 = new Hashes.SHA1()
- this.signature = SHA1.hex(newString)
- // 初始化config
- this.initWxApi()
- },
- // 5. 初始化
- initWxApi () {
- wx.config({
- beta: true, // 调用wx.invoke形式的接口值时,该值必须为true。
- debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
- appId: "ww0xxxxxxxxx", // 必填,企业微信的cropID
- timestamp: this.timestamp, // 必填,生成签名的时间戳
- nonceStr: this.noncestr, // 必填,生成签名的随机串
- signature: this.signature, // 必填,签名,见附录1
- jsApiList: [
- "hideWatermark",
- "showWatermark",
- "previewFile",
- "onRecordBufferReceived",
- "startRecordVoiceBuffer",
- "stopRecordVoiceBuffer",
- "hideOptionMenu",
- ], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
- })
-
- // eslint-disable-next-line no-undef
- wx.checkJsApi({
- jsApiList: [
- "hideWatermark",
- "showWatermark",
- "previewFile",
- "onRecordBufferReceived",
- "startRecordVoiceBuffer",
- "stopRecordVoiceBuffer",
- ], // 需要检测的JS接口列表,所有JS接口列表见附录2,
- success: function () {
- // console.log(res);
- },
- })
-
- wx.ready(function () {
- console.log('隐藏转发')
- wx.hideOptionMenu()
- })
- wx.error(function (res) {
- console.log(res)
- })
- },
- },
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。