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

wx.createIntersectionObserver(Object component, Object options)

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

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

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

  直接封装一个组件

 player.js

  1. // pages/text/play.js
  2. const app = getApp()
  3. Component({
  4. /**
  5. * 组件的属性列表
  6. */
  7. properties: {
  8. index: {
  9. type: Array,
  10. value: []
  11. }
  12. },
  13. ready() {
  14.  
  15. },
  16. attached() {
  17. // 获取随机数字 给video标签id命名 可使用时间戳
  18. var random = Math.floor(Math.random() * 1000);
  19. // 全局获取 屏幕高度宽度
  20. var { screenHeight, screenWidth } = app.globalData.systemInfo
  21. this.setData({
  22. screenHeight,
  23. screenWidth,
  24. random
  25. })
  26. var that = this
  27. var screenHeight = screenHeight //获取屏幕高度
  28.  
  29. var screenWidth = screenWidth //获取屏幕宽度
  30.  
  31. let topBottomPadding = screenHeight / 2
  32. // 获取试图目标元素
  33. const videoObserve = wx.createIntersectionObserver(this)
  34. // 设置试图可见区域
  35. this.observe = videoObserve.relativeToViewport({ top: -topBottomPadding + 10, bottom: -topBottomPadding })
  36.  
  37. // // 暂存随机
  38. var random = that.data.random
  39. this.observe.observe(`#vids${that.data.random}`, (res) => {
  40. let { intersectionRatio } = res
  41. // var videoNow = wx.createVideoContext(res.id,that)
  42. if (intersectionRatio > 0) {
  43. //离开视界,因为视窗占比>0,开始播放
  44.  
  45. // that.setData({
  46.  
  47. // playstart: true
  48.  
  49. // })
  50. //进入视界,开始播放
  51. console.log('start',res);
  52. wx.createVideoContext(res.id,that).play()
  53. wx.createVideoContext('vids',that).play()
  54. // that.observe.disconnect()
  55.  
  56. } else {
  57. // 离开试图 暂停播放
  58. console.log('stop',res);
  59. wx.createVideoContext('vids',that).pause()
  60.  
  61. wx.createVideoContext(res.id,that).pause()
  62. // that.observe.disconnect()
  63. // that.setData({
  64.  
  65. // playstart: false
  66.  
  67. // })
  68. }
  69. })
  70.  
  71. },
  72.  
  73. /**
  74. * 组件的初始数据
  75. */
  76. data: {
  77. list: [],
  78. playstart: false,
  79. screenHeight: "",
  80. screenWidth: "",
  81. random: '',
  82. },
  83.  
  84. /**
  85. * 组件的方法列表
  86. */
  87.  
  88. onShow() {
  89.  
  90. },
  91. methods: {
  92.  
  93. }
  94. })

player.wxml

  1. <view class="box" hover-class="none">
  2. <view class="">
  3. <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>
  4. </view>
  5. </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. URLDecoder异常解决方法

    URLDecoder对参数进行解码时候,代码如: URLDecoder.decode(param,"utf-8"); 有时候会出现类似如下的错误: URLDecoder异常Ille ...

  2. GitLab 转让所有者权限

    GitLab 转让所有者权限 没有查看文档,自己测试了一下,可能会有纰漏,谨慎阅读 私人项目的所有者 私人项目没有所有者权限,可以认为项目命名空间就是所有者. 私人项目http://xxxxxxxxx ...

  3. linux7手动添加systemctl启动程序

    1.路径 [root@angrymushrooms01 system]# pwd /usr/lib/systemd/system 2.脚本内容 vim xxx.service ------------ ...

  4. Java环境变量配置,HelloWorld。

    一  配置环境变量: 1.右键计算机属性 2.点击高级系统设置 3.点击环境变量 在新建页面,输入变量名“JAVA_HOME”:变量值“你的jdk的路径 在系统变量区域,选择“新建”,输入变量名“CL ...

  5. nginx进程模型解析

    nginx进程模型解析 概念   master会发送请求给worker,用于处理用户的请求,模型图如下 nginx进程分类   master进程(只有1个)    接受信号传递给worker   wo ...

  6. 如何为你的IDEA安装插件——几个实用插件推荐

    文章目录 如何为你的IDEA安装插件--几个实用插件推荐 安装插件 插件推荐 1.Background Image Plus 2.Translation 3.CodeGlance 4.Rainbow ...

  7. DRF内置认证组件之自定义认证系统

    自定义token认证 我们知道,在django项目中不管路由以及对应的视图类是如何写的,都会走到 dispatch 方法,进行路由分发, 在阅读 APIView类中的dispatch 方法的源码中,有 ...

  8. 【工具】OSS阿里云存储服务--超级简单--个人还是觉得Fastdfs好玩

    介绍 阿里云对象存储服务(Object Storage Service,简称 OSS)为您提供基于网络的数据存取服务. 使用 OSS,您可以通过网络随时存储和调用包括文本.图片.音频和视频等在内的各种 ...

  9. nohup 命令的使用

    nohup 命令的使用 1. nohup简介 nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号.在注销后使用 nohup 命令运行后台中的 ...

  10. install -M

    [root@controller ~]# source admin-openrc [root@controller ~]# neutron ext-list +-------------------- ...