课程? 中国海洋大学22夏《移动软件开发》
实验名称 实验3:视频播放小程序

一、实验目标

1、掌握视频列表的切换方法;

2、掌握视频自动播放方法;

3、掌握视频随机颜色弹幕效果。

二、实验步骤

一、项目创建

二、页面配置

  1. 创建页面文件 并 删除和修改文件

  • [删除] utils文件夹及其内部所有内容;

  • [删除] app.json 文件内 pages 属性中的 "pages/logs/logs",并[删除] pages 文件夹下的 logs 目录机器内部所有内容;

  • [删除] index.wxml 及 index.wxss 文件中全部的代码;

  • [删除] index.js 中的全部代码,并输入关键词 page 找到并补全函数。

  • [删除] app.wxss 文件中全部的代码;

  • [删除] app.js 中的全部代码,并输入关键词 app 找到并补全函数。

  1. 创建图表文件夹

    • 在中间的目录结构单击 右键 新建 images 文件夹。

    右键单击 image 文件夹,点击 [在资源管理器中打开] 。将播放按键放入此文件夹。

三、视图设计

  1. 导航栏设计

    在 app.json 文件中自定义导航栏效果

    {"pages": ["pages/index/index"],"window": {"navigationBarBackgroundColor": "#987938","navigationBarTitleText": "口 述 校 史"},"sitemapLocation": "sitemap.json"
    }

    颜色 金棕色;导航栏标题 口述校史;

  2. 页面设计

    页面上主要包含三个区域:

    • 区域 1:视频播放器,可播放指定视频; video 组件;

    • 区域 2:弹幕发送区,包含文本输入框和发送按钮; view 组件,并定义 class='danmuArea';

      内部:input 组件和 button 组件;

    • 区域 3:视频列表,垂直排列多个视频标题。点击不同的标题播放对应的视频; view 组件,并定义 class='videoList';

      内单元行:view 组件,并定义 class='videoBar';

      单元行内:image 组件和 text 组件。

    • 页面整体:view 组件,并定义 class= 'container';

  1. 视频组件设计

    index.wxml 代码如下:

    <!--区域 1 :视频播放器-->
    <video id='myVideo' controls></video>

    controls属性用于播放/暂停 、音量控制等组件。

    index.wxss 代码如下:

    /**视频组件样式**/
    video{width: 100%;  /*视频组件宽度 100% */
    }
  2. 弹幕区域设计

    index.wxml 代码如下:

    <!--区域 1 :视频播放器-->……
    <!--区域 2 :弹幕发送-->
    <view class='danmuArea'><input type='text' placeholder="请输入弹幕内容"></input><button bindtap="sendDanmu">发送弹幕</button>
    </view>

    index.wxss 代码如下:

    /**弹幕发送样式**/
    /*弹幕发送区样式*/
    .danmuArea{width: 95%;margin: 10rpx;display: flex;  /*flex模型布局*/flex-direction: row;  /*水平排列*/
    }
    /*弹幕输入区样式*/
    input{border: 1rpx solid #987938;  /*1rpx宽实线金棕色边框*/flex-grow: 1;  /*扩张多余空间宽度*/height: 100rpx;
    }
    /*发送按钮样式*/
    button{color: white;  /*字体颜色*/background-color: #987938;  /*背景颜色*/
    }
  3. 视频列表设计

    index.wxml 代码如下:

    <!--区域 1 :视频播放器-->……
    <!--区域 2 :弹幕发送-->……
    <!--区域 3 :视频列表-->
    <view class='videoList'><view class='videoBar'><image src='/images/play.png'></image><text>测试标题</text></view>
    </view>

    index.wxss 代码如下:

    /**视频列表**/
    /*视频列表区样式*/
    .videoList{width: 100%;  /*宽度*/min-height: 400rpx;  /*最小高度*/
    }
    /*单行视频列表样式*/
    .videoBar{width: 95%;display: flex;flex-direction: row;border: 1rpx solid #987938;margin: 10rpx;  /*外边框*/
    }
    /*播放图标样式*/
    image{width: 70rpx;height: 70rpx;margin: 20rpx;
    }
    /*视频标题样式*/
    text{font-size: 45rpx;  /*字体大小*/color: #987938;margin: 20rpx;flex-grow: 1;
    }

四、逻辑实现

  1. 更新播放列表

    index.wxml 代码修改如下:

    <!--index.wxml-->
    <view class="container"><!--区域 1 :视频播放器--><video id='myVideo' controls src='{{src}}'></video>
    ​<!--区域 2 :弹幕发送-->……
    ​<!--区域 3 :视频列表--><view class='videoList'><view class='videoBar' wx:for="{{list}}" wx:key="video{{index}}"><image src='/images/play.png'></image><text>{{item.title}}</text></view></view>
    </view>

    index.js 文件的 page 函数的 data属性 中添加:

    list: [{id: '1001',title: '杨国宜先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/6/CB/D1/C2DF3FC847F4CE2ABB67034C595_025F0082_ABD7AE2.mp4?e=.mp4'},{id: '1002',title: '唐成伦先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/E/31/EB/2F368A265E6C842BB6A63EE5F97_425ABEDD_7167F22.mp4?e=.mp4'},{id: '1003',title: '倪光明先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/9/DC/3B/35687573BA2145023FDAEBAFE67_AAD8D222_925F3FF.mp4?e=.mp4'},{id: '1004',title: '吴仪兴先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/5/DA/BD/7A27865731CF2B096E90B522005_A29CB142_6525BCF.mp4?e=.mp4'}]
  2. 点击播放视频

    index.wxml 代码修改如下:

    <!--区域 3 :视频列表-->
    <view class='videoList'><view class='videoBar' wx:for="{{list}}" wx:key="video{{index}}" data-url='{{item.videoUrl}}' bindtap="playVideo"><image src='/images/play.png'></image><text>{{item.title}}</text></view>
    </view>

    index.js 文件的 page 函数进行如下修改:

    /*** 生命周期函数--监听页面加载*/
    onLoad: function (options) {this.videoCtx = wx.createVideoContext('myVideo')
    }

    index.js 文件的 page 函数添加如下自定义函数:

    /*** 播放视频*/
    playVideo: function(e){//停止视频this.videoCtx.stop()//更新视频地址this.setData({src: e.currentTarget.dataset.url})//播放新视频this.videoCtx.play()
    }
  3. 发送弹幕

    对 区域1 的 video 组件添加 enable-danmu 和 danmu-btn 属性,用于允许发送弹幕和显示“发送弹幕”按钮。

    index.wxml 代码修改如下:

    <!--区域 2 :弹幕发送-->
    <view class='danmuArea'><input type='text' placeholder="请输入弹幕内容" bindinput="getDanmu"></input><button bindtap="sendDanmu">发送弹幕</button>
    </view>

    index.js 代码修改如下:

    /*** 页面的初始数据*/
    data: {danmuTxt:'',list: [……]
    },
    ​
    /*** 播放视频:此处略*/​
    /*** 更新弹幕内容*/
    getDanmu: function(e){this.setData({danmuTxt: e.detail.value})
    },
    ​
    /*** 发送弹幕*/
    sendDanmu: function(e){let text = this.data.danmuTxt;this.videoCtx.sendDanmu({text: text,color: getRandomColor()  //自定义函数--弹幕颜色随机生成})
    }

    为实现弹幕颜色的随机生成,在 index.js 文件的 page 函数之外中添加自定义函数:

    //生成随机颜色
    function getRandomColor() {let rgb = []for(let i = 0; i < 3; i++){let color = Math.floor(Math.random() * 256).toString(16)color = color.length == 1? '0' + color : colorrgb.push(color)}return '#' + rgb.join('')
    }

三、程序运行结果

四、问题总结与体会

一、遇到的问题 及 解决方法

  1. 渲染层错误

    调试时会出现渲染层报错。原因为浏览器禁止视频自动播放,无视即可。不影响小程序中视频的播放。

  2. 热重载

    关闭模拟器处的热重载,不然会有很多莫名其妙的 Bug 。

二、收获和体会

  1. 熟悉 video 组件的使用

  2. 学习列表的切换,为下一个实验做准备。

【微信小程序】视频播放小程序相关推荐

  1. 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,qq和其浏览器视频播放正常。如何解决?

    问题描述: 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,而且截屏时会先显现出画面: qq和其浏览器视频播放正常. 原因:显卡驱动出错 解决办法:更新显卡驱动或者卸载重新安装显卡驱动 注意:我遇到 ...

  2. 微信小程序上传视频到服务器太慢,微信小程序视频播放加载很慢

    - 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo 微信小程序视频播放加载很慢,一直转圈,3分钟后才能播放,而且播放很卡,加了带宽和cdn也没有效果,官 ...

  3. 微信小程序视频播放代码

    微信小程序视频播放代码 1.index.wxml 2.index.wxss 3.index.js 4.小程序具体属性说明用法详见 微信小程序官方文档video部分

  4. 微信小程序视频播放器

    微信小程序视频播放器 1,视频播放器首页 wxml <swiper class="swiper" indicator-dots='{{swipterSet.indicator ...

  5. 微信小程序小程序模板小程序开发小程序商城小程序流量变现社区小程序开发小程序

    小程序大家都知道,其实小程序这个是个很低的门槛,只要你会搭建基本的网站,基本的代码修改无需编程就可以拥有一份属于的小程序,不仅仅是小程序还可以通过流量主来收益,目前小程序开通流量主的门槛是1000用户 ...

  6. 微信背单词类小程序,小鸡单词源码下载,打卡微信小程序

    微信背单词类小程序,小鸡单词源码下载,微信小程序开发学习案例,小程序开发教程.一个用来背单词每天打卡的微信小程序,还有词汇测试,包含多种词库后台由腾讯云wafer解决方案. 前段时间开始学做微信小程序 ...

  7. 你能用微信小程序打开小程序了【附开发方法】

    6月21日晚间,微信小程序再次迎来升级:小程序可以打开小程序了,同一个公众号下关联的10个同主体小程序和3个非同主体小程序之间,可以调用接口直接相互跳转.微信客户端6.5.9及以上版本支持.另外门店小 ...

  8. 微信应用号(小程序)资源汇总(1010更新)

    wechat-weapp-resource 微信应用号(小程序)资源汇总. 每天不定期整理和收集微信小程序相关资源,方便查阅和学习,欢迎大家提交新的资源,完善和补充. 目录 开源项目(1010更新) ...

  9. 企业微信小程序_小程序开发工具及真机调试_host配置及代理

    文章目录 一.开发前准备 1. 开发文档 2. 工具安装 3. 安装插件 4. 调整编译模式 5. 选择企业 6. PC 调试前端 7. PC 调试后端 二.甄姬调试前端 2.1. 预览小程序 2.2 ...

  10. 微信小程序,小游戏sockect报错修复集合

    微信小程序,小游戏的sockect的报错修复教程 适用范围:所有版本的小程序,小游戏 报错1:errMsg: "open fail: _code:8,_msg:TLS handshake f ...

最新文章

  1. Anaconda系列:conda是什么?conda与pip的区别是什么?
  2. iOS 11开发教程(十九)iOS11应用视图美化按钮之设置按钮的外观
  3. C 语言编程 — 基本语法
  4. ftp工具之本地操作命令
  5. boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)
  6. TchApp 为dotnet core配个UI,项目已托管github
  7. MyBatis复习(九):MyBatis整合C3P0连接池
  8. Spring Boot集成RabbitMQ发送接收JSON
  9. 《构建之法》 第5.5 第6 第7章
  10. mysql 去重 性能比较_mysql 去重方法distinct 与 group by 性能比较 | 学步园
  11. 浅谈cookie中的SameSite属性
  12. Win10 重装后没有微软账户登录选项怎么办?
  13. activiti学习之回退实现
  14. 优化-规划问题(数学建模)
  15. OSPF被动接口配置【eNSP实现】
  16. 2017年10米分辨率全球土地覆盖产品(FROM-GLC10)Python下载爬虫
  17. Eterm协议中文汉字编码
  18. 计算机组成原理课程设计-基本模型机的设计与实现
  19. 汽车信息安全系列-3.TI HSM笔记(更新中)
  20. Elasticsearch 压测方案之 es rally 简介

热门文章

  1. 虚幻4引擎开发的手游_怎么使用虚幻4开发游戏?
  2. 查询CI框架的版本号
  3. 中国省份区域json
  4. 浏览器下载大文件时下载完成但大小对不上
  5. 矿井下无线基站和地面服务器,煤矿井下无线通信系统_矿井通信
  6. linux进入根目录的代码,Linux根目录+源代码目录
  7. 希尔伯特空间等各空间介绍-数据升维以及核函数选择
  8. 520用Java制作一个表白app
  9. easydarwin 安装_EasyDarwin 笔记
  10. 轻文章-使用URL Rewrite实现网站伪静态