怎么实现小程序视频列表中视频的播放与停止功能(小程序,编程语言)

时间:2024-05-02 15:46:58 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

效果类似一条视频的小程序,就是视频列表,然后每个视频上覆盖一张视频的封面图,点击封面图的播放按钮视频播放,点击别的视频的时候,停止播放当前视频,播放点击的视频。差不多是这样:

怎么实现小程序视频列表中视频的播放与停止功能

一条视频

首先上代码:

wxml

<blockwx:for="{{videoList}}"><viewclass='video-item'><viewclass='wrapper'><videoclass='video-video'wx:if='{{index==videoIndex}}'id='video{{index}}'autoplay='{{true}}'show-center-play-btn="{{false}}"src='{{item.resource_add}}'></video><imageclass='video-video2'wx:if='{{index!=videoIndex}}'mode='aspectFill'src='{{item.coverimg}}'></image><imageclass='videoPlay'wx:if='{{index!=videoIndex}}'data-index='{{index}}'bindtap='videoPlay'src='/images/icon/play.png'></image></view><viewclass='video-name'>{{item.title}}</view><viewclass='video-desc'>{{item.description}}</view><viewclass='video-bottom'><viewclass='video-btn'data-index="{{index}}"bindtap='upDown'><imagehidden='{{item.upStatus}}'src='/images/icon/slide.png'></image><imagehidden='{{!item.upStatus}}'src='/images/icon/up.png'></image><text>{{!item.upStatus?'展开':'收起'}}</text></view></view></view></block>

js

videoPlay(event){varindex=video.getDataSet(event,'index');if(!this.data.videoIndex){//没有播放时播放视频this.setData({videoIndex:index})varvideoContext=wx.createVideoContext('video'+index)videoContext.play()}else{varvideoContextPrev=wx.createVideoContext('video'+this.data.videoIndex)videoContextPrev.stop()this.setData({videoIndex:index})varvideoContextCurrent=wx.createVideoContext('video'+index)videoContextCurrent.play()}},

在页面布局上,我们让视频的封面图定位在视频的容器中,将播放按钮定位到视频容器中,且层级最高。因为需求是点击封面图上的播放按钮视频开始播放,所以将show-center-play-btn设置为flase。在循环绑定数据时,将循环的index拼成视频的ID,将循环的index作为属性绑定到播放按钮。

在JS中,首先我们设置videoIndex来表示当前播放的视频在列表中的位置,它的初始值为null。

视频的播放与暂停

当点击事件发生时,首先获取点击的index,然后判断videoIndex的值:

  1. 如果videoIndex值为null,则表示这是第一次点击,将index绑定到videoIndex上,然后通过var videoContext = wx.createVideoContext('video' + index)来获取当前点击的视频,并使用videoContext.play()将视频进行播放。

  2. 如果videoIndex的值不为null,则表示这不是第一次点击,我们首先应该将正在播放的视频停止,然后在播放点击的视频。此时,videoIndex的值表示正在播放的视频在列表中的位置,我们通过var videoContextPrev = wx.createVideoContext('video' + this.data.videoIndex)来获取正在播放的视频上下文,然后通过videoContextPrev.stop()把它停止。最后我们将获取到的index值重新绑定到videoIndex上表示点击视频的序号,然后重复步骤一。

封面图处理

我们已经给封面图和封面图上的播放按钮进行处理了,用微信的wx:if或者hidden就可以了,当videoIndex等于index的时候,表示要播放这个视频,将视频显示并播放,封面图和播放按钮隐藏就可以了。

一点小坑

一开始考虑到性能,由于wx:if在页面加载的时候并不渲染数据,频繁点击的话频繁渲染数据,有点影响性能,就采用了hidden方法,使用hidden方法处理封面图和播放按钮一点问题也没有,处理视频的话有时候会出现视频不播放,并且显示中间播放按钮的情况,所以采用了wx:if,这样页面开始渲染的时候不渲染视频,点击之后渲染视频,并且设置视频自动播放,就可以了。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么实现小程序视频列表中视频的播放与停止功能的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Fundebug怎么支持监控微信小程序HTTP请求错误下一篇:

16 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18