先看看大概效果
1.首先需要了解微信API:         

wx.createIntersectionObserver(Object component, Object options)

创建并返回一个 IntersectionObserver 对象实例。在自定义组件或包含自定义组件的页面中,应使用 this.createIntersectionObserver([options]) 来代替

具体可以看微信小程序文档

2.由于我们这个区域是一个滚动区域,所以我用了scoll-view,最外层用scroll-view包裹

  直接封装一个组件

 player.js

// pages/text/play.js
const app = getApp()
Component({
/**
* 组件的属性列表
*/
properties: {
index: {
type: Array,
value: []
}
},
ready() { },
attached() {
// 获取随机数字 给video标签id命名 可使用时间戳
var random = Math.floor(Math.random() * 1000);
// 全局获取 屏幕高度宽度
var { screenHeight, screenWidth } = app.globalData.systemInfo
this.setData({
screenHeight,
screenWidth,
random
})
var that = this
var screenHeight = screenHeight //获取屏幕高度 var screenWidth = screenWidth //获取屏幕宽度 let topBottomPadding = screenHeight / 2
// 获取试图目标元素
const videoObserve = wx.createIntersectionObserver(this)
// 设置试图可见区域
this.observe = videoObserve.relativeToViewport({ top: -topBottomPadding + 10, bottom: -topBottomPadding }) // // 暂存随机
var random = that.data.random
this.observe.observe(`#vids${that.data.random}`, (res) => {
let { intersectionRatio } = res
// var videoNow = wx.createVideoContext(res.id,that)
if (intersectionRatio > 0) {
//离开视界,因为视窗占比>0,开始播放 // that.setData({ // playstart: true // })
//进入视界,开始播放
console.log('start',res);
wx.createVideoContext(res.id,that).play()
wx.createVideoContext('vids',that).play()
// that.observe.disconnect() } else {
// 离开试图 暂停播放
console.log('stop',res);
wx.createVideoContext('vids',that).pause() wx.createVideoContext(res.id,that).pause()
// that.observe.disconnect()
// that.setData({ // playstart: false // })
}
}) }, /**
* 组件的初始数据
*/
data: {
list: [],
playstart: false,
screenHeight: "",
screenWidth: "",
random: '',
}, /**
* 组件的方法列表
*/ onShow() { },
methods: { }
})

player.wxml

<view class="box" hover-class="none">
<view class="">
<video class="vids" id="vids{{random}}" data-index='{{index}}' src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400"></video>
</view>
</view>

大概实现功能,可以自己设置

最后在自己想用的地方映入组件即可

微信小程序实现滚动视频自动播放(未优化)的更多相关文章

  1. 微信小程序-通知滚动小提示

    代码地址如下:http://www.demodashi.com/demo/14044.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

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

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

  3. 微信小程序scroll-view滚动一次多次触发的问题解决方案

    最近使用微信小程序开发的时候,需要用scroll-view的bindscrolltolower事件,控制加载下一页的内容.但是发现在ios里,下拉滚动一次,事件触发两次,导致重复加载数据. 经过百度和 ...

  4. 微信小程序首支视频广告片发布

    自2017年1月9日上线以来,微信小程序瞬间引爆网络,又迅速归于平静.对这个“无需安装.触手可及.用完即走.无需卸载”的小程序,微信从一开始就对它寄予了无限期望.在公布一系列规则更改后,微信小程序终于 ...

  5. 利用机器学习实现微信小程序-加减大师自动答题

    之前有看到微信小程序<跳一跳>别人用python实现自动运行,后来看到别人用hash码实现<加减大师>的自动答题领取娃娃,最近一直在研究深度学习,为啥不用机器学习实现呢?不就是 ...

  6. 关于微信小程序爬虫关于token自动更新问题

    现在很多的app都很喜欢在微信或者支付宝的小程序内做开发,毕竟比较方便.安全.有流量.不需要再次下载app,好多人会因为加入你让他下载app他会扭头就走不用你的app,毕竟做类似产品的不是你一家. 之 ...

  7. 微信小程序发布新版本时自动提示用户更新

    如图,当小程序发布新的版本后,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会弹出这个提示,提醒用户更新新的版本.用户点击确定就可以自动重启更新,点击取消则关闭弹窗,不再更新. ...

  8. 微信小程序bnner滚动

    首先是轮播图,autoplay 自动播放,interval 轮播的时间,duration 切换速度,可以根据自己需求去添加. Delete:是删除按钮,加载进来是隐藏的,需用户点轮播图进去后,轮播图全 ...

  9. 微信小程序—picker(滚动选择器)

    官方api:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html 上边是官网的api.小程序中,底部下拉滚动选择主要有这几种 ...

随机推荐

  1. C语言学习笔记之杂七杂八容易忽略的点(以后看到一直补充)

    1.变量名可以由 数字 字母 下划线 组成.数字不能用在开头 2.取余%:  只能是整数取余 3.sizeof是个关键字  不是函数 4.printf("%10d\n",a); 共 ...

  2. zuul路由网关集成ssl,实现http到https的转变

    1 前言 最近几天刚开始接触微信小程序的开发,才接触到了https的概念(微信小程序中的请求必须为https请求,不然请求无法成功).https算是对http的安全封装,在http的基础上加了ssl证 ...

  3. k8s使用需认证的私服仓库

    本文内容 在K8s中使用需认证的私服仓库需要导入认证信息到集群中,常规导入方式有两种: 使用Docker已登录的仓库密文导入 使用命令行创建Secret对象导入 本文介绍的就是以上两种方法. 使用Do ...

  4. 2020-08-01:MySQL 的数据如何恢复到任意时间点?

    福哥答案2020-08-01: 恢复到任意时间点以定时的做全量备份,以及备份增量的 binlog 日志为前提.恢复到任意时间点首先将全量备份恢复之后,再此基础上回放增加的 binlog 直至指定的时间 ...

  5. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加   29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 ...

  6. menset与fill

    menset函数一般只对int型数组进行0.-1的赋值.原因:menset对数组是按字节赋值,对每个字节的赋值是相同的,故int的4个字节全部被赋相同的值,而0正好二进制编码全为0,-1的二进制编码全 ...

  7. 最后之作-Last Order(bushi

    最近化学学有机选修,讲羧酸的时候我想到一个问题:不考虑空间异构.能否稳定存在等问题,某高级饱和脂肪酸有多少种同分异构体?做为一名退役的OIer,我将它抽象为了另一个问题:含\(n\)个\(C\)的饱和 ...

  8. troubleshoot之:GC调优到底是什么

    目录 简介 那些GC的默认值 GC的选择 GC的最大线程个数 初始化heap size 最大的heap size 分层编译技术 我们到底要什么 最大暂停时间 吞吐率 简介 我们经常会听到甚至需要自己动 ...

  9. 【服务器部署】Django+宝塔+Nginx_uwsgi部署

    :CentOS安装脚本: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install ...

  10. 远程控制(远控Bin)

    一.概念 控制端:运行在攻击者的电脑中,负责控制其他肉鸡: 被控制端:需要去生成,运行在肉鸡上,木马病毒 二.使用远控Bin工具实现内网远程控制 Step1:打开Kill.exe,点击系统设置,修改监 ...