```
<template>
<view class="page">
<video class="flex-1" src="http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8" autoplay :controls="false"></video>
<!-- 頭部 -->
<view style="position: fixed;left: 0;right: 0;" :style="'top:'+statusBarHeight+'px'">
<!-- 個人信息|觀看詳細信息 -->
<view style="height: 80rpx;" class="px-2 flex justify-between align-center">
<view style="width: 325rpx;background-color: rgba(0,0,0,0.4);" class="flex rounded-circle">
<view class="p">
<image src="/static/tabbar/min.png" style="width: 70rpx;height: 70rpx;" class="rounded-circle"></image>
</view>
<view class="flex-1 flex flex-column justify-center">
<text class="text-white font">昵稱</text>
<text class="text-white font-sm">100</text>
</view>
<view class="p">
<view class="rounded-circle flex align-center justify-center bg-danger" style="width: 70rpx;height: 70rpx;">
<text class="text-white">+</text>
</view>
</view>
</view>
<view style="width: 325rpx;background-color: rgba(0,0,0,0.4);" class="flex rounded-circle">
<scroll-view scroll-x="true" class="flex-1 flex">
<view class="p" v-for="i in 20" :key="i">
<image src="/static/tabbar/min.png" style="width: 70rpx;height: 70rpx;" class="rounded-circle"></image>
</view>
</scroll-view>
<view class="p">
<view class="rounded-circle flex align-center justify-center bg-danger" style="width: 70rpx;height: 70rpx;">
<text class="text-white font-sm">1000</text>
</view>
</view>
</view>
</view>
<!-- 金幣 -->
<view style="height: 80rpx;" class="px-2 my-2">
<view style="width: 325rpx;background-color: rgba(0,0,0,0.4);" class="flex rounded-circle align-center">
<view class="p">
<text class="text-warning">金幣</text>
</view>
<view class="flex-1 flex flex-column justify-center">
<text class="text-white font">100</text>
</view>
</view>
</view>
<!-- 收到禮物 -->
<f-gift ref="gift"></f-gift>
</view>
<!-- 彈幕 -->
<f-danmu ref="danmu"></f-danmu>
<!-- 底部 -->
<view style="position: fixed;left: 0;bottom: 0;right: 0;height: 120rpx;" class="flex align-center justify-between">
<view class="flex-1 flex flex-column align-center justify-center" v-for="(item,index) in btns" :key="index">
<text class="iconfont text-white mb-1">{{item.icon}}</text>
<text class="text-white font">{{item.name}}</text>
</view>
<!-- <view class="flex align-center">
<view class="btn btn-icon" @click="openCoin">
<text class="iconfont text-white" style="font-size: 40px;"></text>
</view>
<view class="btn btn-icon bg-warning" @click="openGift">
<text class="iconfont"></text>
</view>
<view class="btn btn-icon">
<text class="iconfont text-white"></text>
</view>
<view class="btn btn-icon" @click="back">
<text class="iconfont text-white"></text>
</view>
</view> -->
</view>
</view>
</template>
<script>
import fGift from '@/components/live/f-gift.vue';
import fDanmu from '@/components/live/f-danmu.vue';
import uniPopup from '@/components/uni-ui/uni-popup/uni-popup.vue';
import demoGifts from '@/demo/gifts.js';
export default {
components: {
fGift,
fDanmu,
uniPopup
},
data() {
return {
statusBarHeight:0,
content:"",
gifts:[],
giftActiveId:0,
mode:"SD",
enableCamera:true,
position:"back",
beauty:0,
whiteness:0,
btns:[{
name:"翻轉",
icon:"\ue605"
},{
name:"畫質",
icon:"\ue60c"
},{
name:"美顏",
icon:"\ue632"
},{
name:"美白",
icon:"\ue631"
},{
name:"更多",
icon:"\ue84b"
}]
}
},
onLoad(e) {
let res = uni.getSystemInfoSync()
this.statusBarHeight = res.statusBarHeight
let options = JSON.parse(e.options)
this.mode = options.mode
this.position = options.position
this.beauty = options.beauty
this.whiteness = options.whiteness
// 演示
this.gifts = demoGifts
},
mounted() {
// 送禮物演示
// setInterval(()=>{
// this.$refs.gift.send({
// username:"發送人",
// avatar:"",
// gift_name:"蛋糕",
// gift_image:"/static/gift/3.png",
// num:1
// })
// },3000)
// 發送彈幕演示
// let id = 1
// setInterval(()=>{
// this.$refs.danmu.send({
// id:id,
// name:"昵稱"+id,
// content:"測試內容"+id
// })
// id++
// },3000)
},
methods: {
back(){
uni.navigateBack({
delta: 1
});
},
}
}
</script>
<style>
.page{
flex: 1;
}
.btn{
height: 80rpx;
border-radius: 100rpx;
background-color: rgba(255,255,255,0.12);
align-items: center;
justify-content: center;
}
.btn-icon{
width: 80rpx;
margin-right: 20rpx;
}
</style>
```
- 第一章 項目介紹和準備
- 1.1 課程介紹
- 1.2 環境搭建和項目創建
- 1.3 引入全局樣式
- 1.4 引入圖標庫
- 1.5 底部導航和凸起按鈕配置
- 第二章 首頁開發
- 2.1 首頁開發(一)
- 2.2 首頁開發(二)
- 第三章 直播間(用戶端)開發
- 3.1 基礎布局開發(一)
- 3.2 基礎布局開發(二)
- 3.3 個人信息和觀看情況
- 3.4 接收禮物組件(一) - 布局
- 3.5 接收禮物組件(二) - 自動滾動
- 3.6 接收禮物組件(三) - 自動消失
- 3.7 底部操作條
- 3.8 彈幕組件開發(一) - 輸入框彈出層
- 3.9 彈幕組件開發(二) - 置于底部功能
- 3.10 彈幕組件開發(三) - 發送彈幕
- 3.11 送禮物彈框組件(一) - 布局
- 3.12 送禮物彈框組件(二) - 功能
- 第四章 充值金幣頁開發
- 4.1 充值金幣頁開發(一)
- 4.2 充值金幣頁開發(二)
- 第五章 直播間(主播端)開發
- 5.1 創建直播頁 - 推流組件
- 5.2 創建直播頁 - 布局(一)
- 5.3 創建直播頁 - 布局(二)
- 5.4 創建直播頁 - 鏡頭反轉
- 5.5 創建直播頁 - 切換畫質
- 5.6 創建直播頁 - 美顏和美白
- 5.7 關于退出創建直播頁黑邊問題
- 5.8 主播直播間(一)
- 5.9 主播直播間(二)
- 第六章 個人中心頁面開發
- 6.1 個人中心頁
- 第七章 egg.js基礎
- 第八章 后臺管理系統開發
- 8.1 創建項目和基礎配置
- 第九章 交互和部署上線
- 9.1 登錄注冊交互實現
- 9.2 個人中心交互實現
- 9.3 退出登錄以及初始化用戶信息
- 9.5 權限驗證
- 9.6 首頁交互 - 上拉加載與下拉刷新
- 9.7 創建訂單和微信支付(一)
- 9.8 創建訂單和微信支付(二)
- 9.9 微信支付調試和充值頁交互
- 9.10 直播間交互
- 9.11 socket.io安裝與通訊(一)
- 9.12 socket.io安裝和通訊(二)
- 9.13 加入直播間(一)
- 9.14 加入直播間(二)
- 9.15 加入直播間(三)
- 9.16 離開直播間
- 9.17 直播間實時在線用戶列表
- 9.18 直播間實時彈幕功能
- 9.19 直播間送禮物功能
- 9.20 創建直播功能交互(一)
- 9.21 創建直播功能交互(二)
- 9.22 優化前端部分問題(一)
- 9.23 優化前端部分問題(二)
- 第七章 登錄注冊頁面開發