《移动软件开发》实验三:视频播放小程序

2022年夏季《移动软件开发》实验三:视频播放小程序

一、实验目标

1、掌握视频列表的切换方法;2、掌握视频自动播放方法;3、掌握视频随机颜色弹幕效果。

二、实验步骤

1. 项目创建

​ 创建选择空白文件夹存放小程序项目:此处我创建的文件夹为lab3_video。

在这里插入图片描述

2. 页面配置
2.1 创建页面文件

​ (1)将 app.json 文件内 pages 属性中的“ pages / logs / logs ”删除,并删除上一行末尾的

逗号。
(2)按快捷键 ctrl + s 保存当前修改。

2.2 删除和修改文件

(1) 删除utils文件夹及其内部所有内容。

(2)删除 pages 文件夹下的 logs 目录及其内部所有内容。

(3)删除 index.wxml 和 index.wxss 中的全部代码。

(4)删除 index.js 中的全部代码,并且输人关键词“ page ”找到第二个选项按回车键让其自动补全函数。
(5)删除 app.wxss中的全部代码。
(6)删除app.js中的全部代码,并且输入关健间app找到第一个选项按回车键让其自动补全函数。

2.3 创建其他文件

创建文件夹images用于存放图片素材。

在这里插入图片描述

3. 视图设计
3.1 导航栏设计

​ 使用windows创建,背景颜色置为金棕色,名称设置为校史。

  "window": {
    "navigationBarBackgroundColor": "#987938",
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "校史 ",
    "backgroundColor": "#eeeeee",
    "backgroundTextStyle": "light",
    "enablePullDownRefresh": false
  },

在这里插入图片描述

3.2 页面设计

区域1:视频播放器, 用与播放指定的视频。

区域2:弹幕发送区域, 包含文本输入框和发送按钮。

区域3:视频列表, 垂直排列多个视频标题,点击不同的视频标题播放对应的视频内容。

页面设计图如下所示。

在这里插入图片描述

3.2.1 区域一:视频组件设计

​ 通过video组件实现。

<!--第一个区域:视频播放器-->
<video id='myVideo'  controls="true"  src='{{src}}' autoplay="true" enable-danmu danmu-btn></video>

在这里插入图片描述

3.2.2 区域二:弹幕区域设计

通过input和button组件实现。

wxml部分相关代码如下:

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

wxss部分相关代码如下:

.danmuArea{
  display: flex;
  flex-direction: row;
}

input{
  border: 1rpx solid #987938;
  height: 100rpx;
  flex-grow: 1; /*扩张多余空间*/
}

button{
  color: white;
  background-color: #987938;
}

在这里插入图片描述

3.2.3 视频列表设计

​ 通过view组件实现一个可扩展的区域,每行一个播放图标和一个视频标题文本。先设计一行,然后通过wx:for属性添加其余行。

wxml相关代码如下:

<!--第三个区域:视频列表-->
<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>

wxss相关代码如下:

.videoList{
  width: 100%;
  min-height: 400rpx;
}
.videoBar{
   width: 95%;
   display: flex;
   flex-direction: row;
   border-bottom: 1rpx solid #987938;
   margin: 10rpx; /*外边距*/
}
image{
  width: 70rpx;
  height: 70rpx;
  margin: 20rpx;
}
text{
  font-size: 45rpx;
  color: #987938;
  margin: 20rpx;
  flex-grow: 1; /*扩张多余宽度*/
}

在这里插入图片描述

4. 逻辑实现
4.1 更新播放列表

​ 在区域三通过对组件追加wx:for属性,改写为循环展示列表。

wxml相关代码如下:

<!--第三个区域:视频列表-->
<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>

​ 然后在js文件的data属性追加list数组,用于存放视频信息。

​ js文件相关代码如下:

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"
        }
      ],
      src:"",
      danmuTxt:""
  },

实现效果如下:

在这里插入图片描述

4.2 点击播放视频

​ 通过对组件添加data-url属性和bindtap属性实现。

​ 其中data-url用于记录每行视频对应的播放地址,bindtap用于触发点击事件。

​ wxml相关代码如下:

<!--第三个区域:视频列表-->
<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>

​ js文件中的onLoad函数创建视频上下文,用于控制视频的播放和停止。

​ js相关代码如下:

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

​ 在js中添加自定义函数playVideo。

​ js相关代码如下:

 playVideo:function(e){
    this.videoCtx.stop()//停止之前播放的视频
    this.setData({
      src:e.currentTarget.dataset.url
    })  //更新视频地址
    this.videoCtx.play()//播放新视频
  },

​ 运行效果如下图所示:

在这里插入图片描述
在这里插入图片描述

4.3 发送弹幕

​ 对video组件添加enable-danmu和danmu-btn属性,用于允许发送弹幕和显示发送弹幕按钮。

​ wxml相关代码如下:

<!--第一个区域:视频播放器-->
<video id='myVideo'  controls="true"  src='{{src}}' autoplay="true" enable-danmu danmu-btn></video>

​ 在区域二为文本框追加bindinput属性,用于获取弹幕内容;追加bindtap属性,用于触发点击事件。

​ wxml相关代码如下:

<view class="danmuArea">
  <input type="text" placeholder="请输入弹幕内容" bindinput="getDanmu"></input>
  <button bindtap="sendDanmu">发送弹幕</button>
</view>

js代码片段如下:

 getDanmu:function(e){
    this.setData({
      danmuTxt:e.detail.value
    })
  },
  
  sendDanmu:function(e){
    let text = this.data.danmuTxt
    this.videoCtx.sendDanmu({
      text:text,
      color:'red'
    })
  },

实现效果如下,弹幕颜色为红色:

在这里插入图片描述

通过自主实现的getRandomColor()函数可以随机生成一个十六进制的颜色,只需将color属性的’red‘改为getRandomColor()即可。

getRandomColor()函数代码实现如下:

//生成随机颜色
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:color
    rgb.push(color)
  }
  return '#' + rgb.join('')
}

实现效果如下:

在这里插入图片描述

三、程序运行结果

  1. 切换视频
    在这里插入图片描述

  2. 发送彩色弹幕

在这里插入图片描述

四、问题总结与体会

问题总结

问题:切换视频播放的逻辑没有搞清楚

解决方法:学习相关视频后理解,逻辑为:停止当前播放视频->更新视频播放地址->播放新视频

心得体会

​ 通过此次实验,我初步掌握了视频列表的切换方法;掌握了视频自动播放方法,并通过实现随机生成颜色的函数,初步掌握了视频随机颜色弹幕效果。此次实验,对于我《移动软件开发》这门课的学习有非常大的帮助,通过也为我以后计算机专业的学习打下了坚实基础。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值