ouc_移动软件开发_实验三

一、实验目标

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

二、实验步骤

1.准备阶段:

(1)为了方便后续实验,我们需要准备格式为MP4的视频链接,记录与记事本,以便后续使用,而我选择的是风都侦探前三集

(ps:视频链接只需要在网页打开想播放的视频,并且右击便可以复制链接,但是需要注意的是,有的视频软件商家会对自己的视频有加密,所以所提供的链接其实是不能在微信小程序开发是使用的,这里推荐一个网站:茶杯狐 Cupfox - 努力让找电影变得简单,里面有部分视频是可以直接复制链接使用的。

(2)准备播放图标的图片,以便后续使用,这里我选择并对其进行了一定程度的抠图的图标是

(3)搭建微信开发工具的编程环境,准备开始编程

2.首先对小程序的UI进行设计,下面是相关代码以及作用功能的注释

app.json源码

{
  "pages": [
    "pages/index/index"
  ],
  "window": {
    "navigationBarBackgroundColor": "#987938",
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "风都侦探",
    "backgroundColor": "#eeeeee",
    "backgroundTextStyle": "light",
    "enablePullDownRefresh": false
  },
  "sitemapLocation": "sitemap.json"
}

index.wxml源码

<!--pages/index/index.wxml-->
<!-- <text>pages/index/index.wxml</text> -->
<!-- 第一个区域:视频播放器 -->
<video id='myVideo' controls src='{{src}}' enable-danmu danmu-btn></video><!-- 为视频播放器添加了播放控件 -->
<!-- 第二个区域:弹幕区域 -->
<view class="danmuArea">
  <input type="text" placeholder="请输入弹幕内容" bindinput="getDanmu"></input><!-- 弹幕框 -->
  <button bindtap="sendDanmu">发送弹幕</button><!-- 发送弹幕按钮 -->
</view>
<!-- 第三个区域:视频列表 -->
<view class="videoList">
  <view class="videoBar" wx:for='{{list}}' wx:key='video{{index}}' data-url='{{item.videoUrl}}' bindtap="playVideo">
    <image src="/image/play-button-icon-png-23.png" class="images"></image><!-- 播放图标 -->
    <text>{{item.title}}</text><!-- 选集时的点击的选集框 -->
  </view>
</view>

index.wxss源码

/* pages/index/index.wxss */
/* video样式 */
video{
  width: 100%;/*保证在每种机型上video都可以满足沿行满屏*/
}
/* 弹幕区域的UI设计 */
.danmuArea{
  display: flex;
  flex-direction: row;
}
/* input区域UI设计 */
input{
  border:1rpx solid #987938;
  height:100rpx;
  flex-grow: 1;/*扩展多余空间*/
}
/* 按钮区域设计 */
button{
  color: white;/*白色按钮边框使其更容易融入白色背景*/
  background-color: #987938;
}
.videoList{
  width: 100%;
  min-height: 400rpx;
}
​
/* 设置videoBar相关属性 */
.videoBar{
  width: 95%;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  border-bottom: 1rpx solid #987938;/*设置底边*/
  margin:10rpx;/*外边距*/
}
​
/* 播放图片属性设置 */
.images{
  width: 100rpx;
  height: 100rpx;
}
​
text{
  color: #987938;
  flex-grow: 1;/*扩展多余空间*/
  font-family: kaiti;
  font-weight: 800;
  font-size: 50rpx;
}

3.对编写的小程序进行功能实现

index.js源码
// pages/index/index.js
//生成随机颜色
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('')
}
Page({
​
  /**
   * 页面的初始数据
   */
  data: {
  /*创建一个list,里面储存着不同的集数以及对应的url*/
  /*并且能够让index.wxml里的wx.for功能成功对齐进行遍历*/
    list:[
      {
        id:'1',
        title:'第一集',
       videoUrl:'https://v3-default.ixigua.com/89a4c517510baf4f86ebf228621ffdaa/62ff34b0/video/s/220v0d041g10000cbon7g3c77u0a72djoo011448b4000008b85a415704/?hdmoli&filename=360P.mp4'
      },
      {
        id:'2',
        title:'第二集',
        videoUrl:'https://v6-default.ixigua.com/caa62b61958979cba21300245731c67e/62ff3a33/video/tos/cn/tos-cn-v-0064/cb3803d33f9644e49388350eaba4b818/?hdmoli&filename=1080P.mp4'
      },
      {
        id:'3',
        title:'第三集',
        videoUrl:'https://v9-default.ixigua.com/8c6d7eb054d77aa429709fb8d2d49e5c/62ff3b8b/video/tos/cn/tos-cn-v-0064/df60828d09f64a6f89856d5fe4ec97ff/?hdmoli&filename=1080P.mp4'
      },
      {
        id:'4',
        title:'第四集(未更新)',
        // videoUrl:'https://player.youku.com/embed/XNTg0NTM4NDA4OA==?client_id=f7d81b29f4146ce2'
      }
    ],
    src:'',
    danmuTxt:''
  },
​
/*实现playVideo函数*/
playVideo:function(e){
  this.videoCtx.stop()
  // 停止播放之前正在播放的视频
  this.setData({
    src:e.currentTarget.dataset.url
  })
  // 更新视频地址
  this.videoCtx.play()
},
​
/*实现getDanmu函数*/
getDanmu:function(res){
  this.setData({
    danmuTxt:res.detail.value
  })
},
​
/*实现sendDanmu函数*/
sendDanmu:function(res){
  let text = this.data.danmuTxt
  this.videoCtx.sendDanmu({
    text:text,
    color:getRandomColor()
  })
},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.videoCtx = wx.createVideoContext('myVideo')/*监听页面加载,使得进入页面就能加载到id为‘myVideo’的部分*/
  },
​
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
​
  },
​
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
​
  },
​
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
​
  },
​
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
​
  },
​
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
​
  },
​
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
​
  },
​
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
​
  }
})

4.上传实验结果,进入测试阶段

三、程序运行结果

运行结果:

小程序成功运行,但是在调试框内会有警告出现

运行截图:

初始界面:

分别点击第一集,第二集,第三集后的界面(并且视频可以正常播放)

弹幕截图:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值