记录用户上次看视频的进度,并且从记录的时间继续观看

思路:因为视频多个,所以定义一个数组接收该用户已观看但是未观看完毕的字段(videoPlanArr),第一次进入获取本地储存的字段(videoPlanArr),如果没有获取到的话储存该视频id;有的话查询是否在数组中,未找到就把视频id添加进videoPlanArr中,有找到的话获取到上次观看的时间,赋值到video的initial-time属性上。timeupdate获取视频播放的进度,更新到videoPlanArr里。ended视频观看完毕删除videoPlanArr里视频id的进度。

getVideoDetail(){...
	//res为请求到的数据
	let videoPlanArr = uni.getStorageSync('videoPlanArr')
	if(videoPlanArr){//判断 本地获取到videoPlanArr里的数据
		let rIndex = videoPlanArr.findIndex((ev)=>{//查询视频id是否在数组中,有的话返回下标,没有则返回-1
			return ev.id == this.id
		}
		if(rIndex == -1){//未找到则把该视频与进度push进数组里
			videoPlanArr.push({id:this.id,
				lastDuration:0
			})
			uni.setStorageSync('videoPlanArr',videoPlanArr)
		}else{//找到则获取到储存的进度
			this.lastDuration = videoPlanArr[rIndex].lastDuration
		}
	}else{//未获取到videoPlanArr里的数据
		videoPlanArr = [
			{id:this.id,//视频的id
				lastDuration:0,//上次的观看记录
			}
		]
		uni.setStorageSync('videoPlanArr',videoPlanArr) //数据储存到本地
	}
	setTimeout(()=>{this.videoContext = uni.createVideoContext('myvideo')
	},100)
},
//播放进度变化时触发
timeupdate(e){//e.detail.currentTime是已经播放了多久,e.detail.duration是该视频多长
	let arr = uni.getStorageSync('videoPlanArr')
	let res = arr.findIndex((ev)=>{return ev.id == this.id
	})
	arr[res].lastDuration= e.detail.currentTime //更新视频观看进度
	uni.setStorageSync('videoPlanArr',arr)
},
//视频播放完毕
ended(e){let arr = uni.getStorageSync('videoPlanArr')
	let res = arr.findIndex((ev)=>{return ev.id == this.id
	})
	arr.splice(res,1) //观看完毕删除观看进度记录
	uni.setStorageSync('videoPlanArr',arr)
}