小程序视频列表中视频的播放与中止

作者 : 开心源码 本文共2384个字,预计阅读时间需要6分钟 发布时间: 2022-05-11 共110人阅读

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

一条视频

首先上代码:
wxml

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

js

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

在页面布局上,我们让视频的封面图定位在视频的容器中,将播放按钮定位到视频容器中,且层级最高。由于需求是点击封面图上的播放按钮视频开始播放,所以将show-center-play-btn设置为flase。在循环绑定数据时,将循环的index拼成视频的ID,将循环的index作为属性绑定到播放按钮。
在JS中,首先我们设置videoIndex来表示当前播放的视频在列表中的位置,它的初始值为null

视频的播放与暂停

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

  • 假如videoIndex值为null,则表示这是第一次点击,将index绑定到videoIndex上,而后通过var videoContext = wx.createVideoContext('video' + index)来获取当前点击的视频,并用videoContext.play()将视频进行播放。
  • 假如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,这样页面开始渲染的时候不渲染视频,点击之后渲染视频,并且设置视频自动播放,即可以啦~~~

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 小程序视频列表中视频的播放与中止

发表回复