225 lines
5.3 KiB
Python
225 lines
5.3 KiB
Python
<template>
|
||
<view>
|
||
<!-- <view v-show="already" class="markBlock" ref="mydom"> -->
|
||
<view v-show="already" :style="{height:ReadyHeight+'px'}" class="markBlock">
|
||
<view style="">
|
||
<view class="">
|
||
<view class="spinner">
|
||
<view class="spinner-container container1">
|
||
<view class="circle1"></view>
|
||
<view class="circle2"></view>
|
||
<view class="circle3"></view>
|
||
<view class="circle4"></view>
|
||
</view>
|
||
<view class="spinner-container container2">
|
||
<view class="circle1"></view>
|
||
<view class="circle2"></view>
|
||
<view class="circle3"></view>
|
||
<view class="circle4"></view>
|
||
</view>
|
||
<view class="spinner-container container3">
|
||
<view class="circle1"></view>
|
||
<view class="circle2"></view>
|
||
<view class="circle3"></view>
|
||
<view class="circle4"></view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
资源缓冲中,请稍后...
|
||
</view>
|
||
|
||
</view>
|
||
<video class="video" :src="url" controls object-fit="cover"
|
||
id="videoPlayer" :poster="item.coverurl" @play="doPlay($event)"
|
||
@loadedmetadata="alreadyLoad"
|
||
:initial-time="current" style="width: 100%;" @timeupdate="timeupdate($event)"
|
||
@pause="doPlay($event)" @ended="doPlay($event)">
|
||
</video>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
url:'',
|
||
item: {},
|
||
ReadyHeight:0,
|
||
videoId:0,
|
||
current:0,
|
||
currentTime:0,
|
||
already:true,
|
||
alreadyPlay:false,
|
||
}
|
||
},
|
||
onLoad(options) {
|
||
// debugger;
|
||
let that=this;
|
||
that.videoId = options.id;
|
||
that.url = options.url;
|
||
if(options.current){
|
||
that.current = options.current;
|
||
}else{
|
||
that.$u.api.getVideoRecord(options.id).then(res => {
|
||
that.current = res.data.current;
|
||
})
|
||
}
|
||
that.changeHeight();
|
||
},
|
||
methods:{
|
||
changeHeight(){
|
||
let that=this;
|
||
let obj = uni.createSelectorQuery().select('.video')
|
||
obj.boundingClientRect(function (data) { // data - 各种参数
|
||
console.log(data)
|
||
that.ReadyHeight=data.height;
|
||
}).exec()
|
||
},
|
||
alreadyLoad(){
|
||
this.already = false;
|
||
},
|
||
doPlay(e) {
|
||
if(this.alreadyPlay){}else{
|
||
// debugger;
|
||
this.alreadyPlay =true;
|
||
this.$u.api.putMyVideoView(this.videoId).then(res=>{})
|
||
}
|
||
// videoContextPrev.pause();
|
||
},
|
||
timeupdate(e){
|
||
let currentTime = Math.floor(e.detail.currentTime);
|
||
this.currentTime =currentTime;
|
||
},
|
||
},
|
||
beforeDestroy(){
|
||
// debugger;
|
||
let params = {'current':this.currentTime};
|
||
this.$u.api.putMyVideoView(this.videoId,params).then(res => {
|
||
})
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
.markBlock{
|
||
color:#ffffff;
|
||
text-align:center;
|
||
width: 100%;
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
background: rgba(0,0,0,0.8);
|
||
z-index: 100;
|
||
}
|
||
.spinner {
|
||
margin: 200upx auto 80upx;
|
||
width: 100upx;
|
||
height: 100upx;
|
||
position: relative;
|
||
}
|
||
|
||
.container1 > view, .container2 > view, .container3 > view {
|
||
width: 20upx;
|
||
height: 20upx;
|
||
background-color: #fff;
|
||
|
||
border-radius: 100%;
|
||
position: absolute;
|
||
-webkit-animation: bouncedelay 1.2s infinite ease-in-out;
|
||
animation: bouncedelay 1.2s infinite ease-in-out;
|
||
-webkit-animation-fill-mode: both;
|
||
animation-fill-mode: both;
|
||
}
|
||
|
||
.spinner .spinner-container {
|
||
position: absolute;
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.container2 {
|
||
-webkit-transform: rotateZ(45deg);
|
||
transform: rotateZ(45deg);
|
||
}
|
||
|
||
.container3 {
|
||
-webkit-transform: rotateZ(90deg);
|
||
transform: rotateZ(90deg);
|
||
}
|
||
|
||
.circle1 { top: 0; left: 0; }
|
||
.circle2 { top: 0; right: 0; }
|
||
.circle3 { right: 0; bottom: 0; }
|
||
.circle4 { left: 0; bottom: 0; }
|
||
|
||
.container2 .circle1 {
|
||
-webkit-animation-delay: -1.1s;
|
||
animation-delay: -1.1s;
|
||
}
|
||
|
||
.container3 .circle1 {
|
||
-webkit-animation-delay: -1.0s;
|
||
animation-delay: -1.0s;
|
||
}
|
||
|
||
.container1 .circle2 {
|
||
-webkit-animation-delay: -0.9s;
|
||
animation-delay: -0.9s;
|
||
}
|
||
|
||
.container2 .circle2 {
|
||
-webkit-animation-delay: -0.8s;
|
||
animation-delay: -0.8s;
|
||
}
|
||
|
||
.container3 .circle2 {
|
||
-webkit-animation-delay: -0.7s;
|
||
animation-delay: -0.7s;
|
||
}
|
||
|
||
.container1 .circle3 {
|
||
-webkit-animation-delay: -0.6s;
|
||
animation-delay: -0.6s;
|
||
}
|
||
|
||
.container2 .circle3 {
|
||
-webkit-animation-delay: -0.5s;
|
||
animation-delay: -0.5s;
|
||
}
|
||
|
||
.container3 .circle3 {
|
||
-webkit-animation-delay: -0.4s;
|
||
animation-delay: -0.4s;
|
||
}
|
||
|
||
.container1 .circle4 {
|
||
-webkit-animation-delay: -0.3s;
|
||
animation-delay: -0.3s;
|
||
}
|
||
|
||
.container2 .circle4 {
|
||
-webkit-animation-delay: -0.2s;
|
||
animation-delay: -0.2s;
|
||
}
|
||
|
||
.container3 .circle4 {
|
||
-webkit-animation-delay: -0.1s;
|
||
animation-delay: -0.1s;
|
||
}
|
||
|
||
@-webkit-keyframes bouncedelay {
|
||
0%, 80%, 100% { -webkit-transform: scale(0.0) }
|
||
40% { -webkit-transform: scale(1.0) }
|
||
}
|
||
|
||
@keyframes bouncedelay {
|
||
0%, 80%, 100% {
|
||
transform: scale(0.0);
|
||
-webkit-transform: scale(0.0);
|
||
} 40% {
|
||
transform: scale(1.0);
|
||
-webkit-transform: scale(1.0);
|
||
}
|
||
}
|
||
</style>
|