关于小程序video的一些基本使用方法,可点击这里稍作了解。

需求:

1.默认显示封面;

2.一个视频播放的时候,其他视频停止播放,并显示封面。

解决问题思路:

1.通过wx:if判断当前视频是否是播放的状态,如果是就显示视频,如果不是就隐藏视频;

2.点击封面的时候,获取到该视频的id,进行判断,如果当前没有视频播放,就把该视频设置为播放的状态;如果当前有视频播放,则停止当前播放的视频,再播放你点击的这个视频。

具体实施方案:

wxml:

<view wx:for="{{courseList}}" wx:for-item="course" class='course-pannle-item' wx:for-index="idx">
<view class='video-item'>
<video wx:if='{{idx==playIndex}}' id='video{{idx}}' autoplay='{{true}}' show-center-play-btn="{{false}}" src='{{course.videoUrl}}' controls="true" objectFit="cover">
</video>
<image class='video-cover' wx:if='{{idx!=playIndex}}' mode='widthFix' src='{{course.coverUrl}}'></image>
<image class='video-play-btn' wx:if='{{idx!=playIndex}}' mode='widthFix' data-index='{{idx}}' bindtap='videoPlay' src='/images/play.png'></image>
<text wx:if='{{idx!=playIndex}}' class='video-duration fs-28'>{{course.duration}}</text>
</view>
</view>

js:

//获取应用实例
var app = getApp(); Page({ /**
* 页面的初始数据
*/
data: {
playIndex: null,//用于记录当前播放的视频的索引值
courseList: [{
videoUrl: '',//视频路径
coverUrl: '/images/course.png', //视频封面图
duration: '03:00', //视频时长
}, {
videoUrl: '',
coverUrl: '/images/course.png',
duration: '04:45',
}]
},
videoPlay: function (e) {
var curIdx = e.currentTarget.dataset.index;
// 没有播放时播放视频
if (!this.data.playIndex) {
this.setData({
playIndex: curIdx
})
var videoContext = wx.createVideoContext('video' + curIdx) //这里对应的视频id
videoContext.play()
} else { // 有播放时先将prev暂停,再播放当前点击的current
var videoContextPrev = wx.createVideoContext('video' + this.data.playIndex)
if (this.data.playIndex != curIdx) {
videoContextPrev.pause()
}
this.setData({
playIndex: curIdx
})
var videoContextCurrent = wx.createVideoContext('video' + curIdx)
videoContextCurrent.play()
}
}
})

wxss:

.video-item{
position: relative;
width: 100%;
height: 420rpx;
}
video{
width: 100%;
height: 100%;
}
.video-cover{
position: absolute;
left:;
top: 0
}
.video-play-btn{
position: absolute;
width: 120rpx;
height: 120rpx;
left:;
right:;
top:;
bottom:;
margin: auto
}
.video-duration{
position: absolute;
right: 10px;
bottom: 10px;
color: #fff;
}

说说遇到的问题:

1.视频播放的时候,滑动页面视频会一直在那个位置不会跟着滚动条移动。

  解决方法:不要将视频放在scroll-view组件里面。官网里面也有讲到。我自己粗心没注意到这个问题。

2.视频播放的时候,会挡住底部的tab导航。

  解决方法:一开始底部导航是我自定义的一个模板。视频层级是最高的,所以会一直显示在最上面。最后只能用微信的tabbar,在app.json里面配置。详情点击这里

       感觉自定义的tabbar会方便许多,因为有时候底部tabbar的情况会不一样。如果哪位看官有解决视频不会挡住自定义底部导航的方法,望不吝赐教了~~

微信小程序——video使用总结的更多相关文章

  1. 微信小程序 - video组件poster无效 / 视频播放列表

    在做有关微信小程序有关视频播放页面的时候,遇到video组件设置poster无效果,然后查了下poster属性:视频封面的图片网络资源地址,如果 controls 属性值为 false 则设置 pos ...

  2. 如何使用微信小程序video组件播放视频

    相信很多人都有在手机上看视频的习惯,比较看视频更真实更形象.那么我们在微信小程序中如何观看视频呢?这就需要video组件的帮忙了.今天我们就给大家演示一下,如何用微信小程序组件video播放视频.我们 ...

  3. 微信小程序video组件出现无法播放或卡顿

    微信小程序使用video组件播放视频的时候,会出现卡顿或者无法播放的问题,加一个custom-cache=”true“即可解决,这个属性文档上没有,是从小程序开发社区中get到的.

  4. 微信小程序 video组件 不随页面滚动

    1.页面初始化(滚动前)时,video所在位置 2.页面滚动后,video视频组件所在位置 看了别人家的小程序并不会出现这种状况.最后检查发现,是页面包裹层设置了 height:100% 导致的 顺便 ...

  5. 微信小程序-video详解

    在小程序火热的今天,作为IT行业的一员,我也来凑了一下热闹,话不多说了,接下来看看视频上传,和跨页面获取值的相关案例吧!! 视频上传部分代码: 视频播放 随机颜色的产生: 颜色页面的选择:

  6. 微信小程序 video组件----真机测试position:fixed无效 且有黑底

    1.问题描述 video组件fixed后,视频随页面滚动,且有个黑色底停留在页面. 页面滚动前 滚动后 这里贴一下修改前代码,在微信开发者工具看是没有任何问题的.在手机端测试就有以上的问题 <v ...

  7. 微信小程序video

    1.video是原生组件原生组件的层级是最高的,想要覆盖在video上,只能用cover-view 和 cover-image 组件,这2个可以无限嵌套.适用场景:给视频加标题: 2.检测video播 ...

  8. 第七篇、微信小程序-video组件

    主要属性: 效果图: ml: <View>1.播放网络视频</View> <view > <video style="width: 100%;hei ...

  9. 解决微信小程序video属性controls失效问题

    <view class="VideoBox"> <video class='myVideo' id="myVideo01" src=" ...

随机推荐

  1. MySql(九):MySQL性能调优——Schema设计的性能优化

    一.高效的模型设计 先了解下数据库设计的三大范式 第一范式:要求有主键,并且要求每一个字段原子性不可再分 第二范式:要求所有非主键字段完全依赖主键,不能产生部分依赖 第三范式:所有非主键字段和主键字段 ...

  2. PhotoShop CS6实现照片背景虚化效果

    在摄影实践中,虚化背景是突出主体的常用手段.但是由于消费级DC镜头的实际焦距都很短,因此实现浅景深而虚化背景的难度较大.如果我们希望用消费级DC也能达到虚化背景突出主体的效果,那么,Photoshop ...

  3. 关于的 recorder robotium 的Eclipse插件(URL:http://recorder.robotium.com/updates/或者说不可用)

    最近在学robotium.看到别人说robotium的Eclipse的插件非常好用. 打算安装时.发现死活都无法连接http://recorder.robotium.com/updates/ 过程是  ...

  4. scrollReveal.js页面滚动动态效果

    scrollReveal.jshttp://www.dowebok.com/134.html简介 和 WOW.js 一样,scrollReveal.js 也是一款页面滚动显示动画的 JavaScrip ...

  5. lua 工具类(二)

    local tonumber_ = tonumber function tonumber(v, base) end function toint(v) return math.round(tonumb ...

  6. flink-jdbc sink

    https://github.com/apache/flink/tree/master/flink-connectors/flink-jdbc/src https://blog.csdn.net/lu ...

  7. oracle 负载均衡连接方式常用SQL语句备忘录

    1.---表中有重复记录用SQL语句查询出来 select * from Recharge where RechargeSerial in (select RechargeSerial from Re ...

  8. MySQL数据库权限管理

    # MySQL数据库权限管理 ### 前言------------------------------ 对不同的用户赋予不同级别的访问权限是个好习惯- 杜绝一些恶意用户 ### 参考资料------- ...

  9. Android之Activity切换

    ●假如有Activity01和Activity02,从Activity01切换到Activity02并传递参数. Activity01中: button.setOnClickListener(new  ...

  10. 关于正则表达式的“\b”

    今天刚刚开始看正则表达式就遇到一个十分头疼的问题,原文是这样的: “不幸的是,很多单词里包含hi这两个连续的字符,比如him,history,high等等.用hi来查找的话,这里边的hi也会被找出来. ...