<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [toc] # 3.10 彈幕組件開發(三) - 發送彈幕 ## 3.10.1 封裝彈幕方法 ``` <script> export default { data(){ return { scrollIntoView : "", list : [ ] } }, mounted(){ // let id = 1; // //由于彈幕的數據都是從后端傳遞過來了,所以我們在這只是先進行模擬一下 // setInterval(()=>{ // this.list.push({ // id : id, // name : "昵稱" + id, // content : "九月直播666" // }) // //調用置于底部方法 // this.toBottom(); // id++ // },1000) }, methods:{ //發送彈幕方法 send(data){ this.list.push(data) this.toBottom() }, //置于底部風發 toBottom(){ setTimeout(()=>{ let len = this.list.length; if(len > 0 && this.list[len - 1]){ this.scrollIntoView = 'danmu' + this.list[len - 1].id; } },200) } } } </script> ``` ## 3.10.2 在live.nvue組件調用封裝的方法 ``` <!-- 彈幕 --> <f-danmu ref="danmu"></f-danmu> ``` ``` <script> import fGift from "../../components/live/f-gift.vue" import uniPopup from "../../components/uni-ui/uni-popup/uni-popup.vue" import fDanmu from "../../components/live/f-danmu.vue" export default { data(){ return { statusBarHeight : 0, content : "" } }, components: { fGift, uniPopup, fDanmu }, onLoad(){ //獲取通知欄的高度 let res = uni.getSystemInfoSync(); this.statusBarHeight = res.statusBarHeight; }, 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 : "九月直播666" }) id++; },3000) }, methods:{ openInput(){ this.$refs.input.open() }, submit(){ this.$refs.input.close() } } } </script> ``` ## 3.10.3 判斷提交彈幕的內容為空,則輸入提示框不消失 ``` submit(){ if(this.content == ""){ return; } this.$refs.input.close() } ``` ## 3.10.4 設置彈幕的內容為輸入框提交的內容 ``` <script> import fGift from "../../components/live/f-gift.vue" import uniPopup from "../../components/uni-ui/uni-popup/uni-popup.vue" import fDanmu from "../../components/live/f-danmu.vue" export default { data(){ return { statusBarHeight : 0, content : "" } }, components: { fGift, uniPopup, fDanmu }, onLoad(){ //獲取通知欄的高度 let res = uni.getSystemInfoSync(); this.statusBarHeight = res.statusBarHeight; }, 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 : "九月直播666" // }) // id++; // },3000) }, methods:{ openInput(){ this.$refs.input.open() }, submit(){ //發送內容為空,提示框不消失 if(this.content == ""){ return; } //發送彈幕 this.$refs.danmu.send({ id : Math.random() * 100, name : "昵稱", content : this.content }) //清空輸入的內容 this.content = ""; //關閉輸入提示框 this.$refs.input.close() } } } </script> ``` ## 3.10.5 設置當輸入提示框內容為空時,發送按鈕禁用 ``` <!-- 輸入框彈出層 --> <uni-popup type="bottom" ref="input"> <view class="bg-white flex align-center px-3" style="height: 120rpx;"> <input placeholder="說點什么呢..." v-model="content" type="text" style="height: 80rpx;" class="border rounded flex-1 px-3 font-md"> <view :class="content == '' ? 'bg-main-disabled' : 'bg-main'" class=" flex ml-3 align-center py-2 rounded px-2 justify-center" @click="submit"> <text class="font text-white">發送</text> </view> </view> </uni-popup> ``` ## 3.10.6 實現關閉直播間返回上一頁功能 ``` <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 class="px-2 flex justify-between" style="height:80rpx;"> <!-- 個人信息 --> <view style="width: 325rpx; background-color: rgba(0,0,0,0.4);" class="flex align-center 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="rounded-circle flex align-center bg-danger justify-center" style="width: 70rpx; height: 70rpx;"> <text class="text-white">+</text> </view> </view> <!-- 觀看情況 --> <view style="width: 325rpx; background-color: rgba(0,0,0,0.4);" class="flex align-center rounded-circle"> <!-- 觀看的用戶 --> <scroll-view scroll-x="true" class="flex-1 flex"> <view class="p" v-for="(item,index) in 20" :key="index"> <image src="../../static/tabbar/min.png" style="width: 70rpx; height: 70rpx;" class="rounded-circle"></image> </view> </scroll-view> <!-- 觀看人數 --> <view class="rounded-circle flex align-center bg-danger justify-center" style="width: 70rpx; height: 70rpx;"> <text class="text-white font-sm">1000</text> </view> </view> </view> <!--金幣--> <view class="px-2 my-2" style="height: 80rpx;"> <view style="width: 325rpx; background-color: rgba(0,0,0,0.4);" class="flex align-center rounded-circle"> <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 class="position-fixed right-0 bottom-0 left-0 flex align-center justify-between" style="height: 120rpx;"> <view class="px-2" > <view @click="openInput" style="height:80rpx;border-radius: 100rpx;background-color: rgba(255,255,255,0.12);" class="flex justify-center px-3 align-center"> <text class="text-white font">說點什么...</text> </view> </view> <view class="flex align-center"> <view style="height:80rpx; width: 80rpx; background-color: rgba(255,255,255,0.12);" class="flex mr-1 justify-center rounded-circle align-center"> <text class="iconfont text-white" style="font-size: 40px; ">&#xe633;</text> </view> <view style="height:80rpx; width: 80rpx;" class="flex mr-1 justify-center rounded-circle align-center bg-warning"> <text class="iconfont">&#xe67c;</text> </view> <view style="height:80rpx; width: 80rpx; background-color: rgba(255,255,255,0.12);" class="flex mr-1 justify-center rounded-circle align-center"> <text class="iconfont text-white">&#xe7cd;</text> </view> <view @click="back" style="height:80rpx; width: 80rpx; background-color: rgba(255,255,255,0.12);" class="flex mr-1 justify-center rounded-circle align-center"> <text class="iconfont text-white">&#xe607;</text> </view> </view> </view> <!-- 輸入框彈出層 --> <uni-popup type="bottom" ref="input"> <view class="bg-white flex align-center px-3" style="height: 120rpx;"> <input placeholder="說點什么呢..." v-model="content" type="text" style="height: 80rpx;" class="border rounded flex-1 px-3 font-md"> <view :class="content == '' ? 'bg-main-disabled' : 'bg-main'" class=" flex ml-3 align-center py-2 rounded px-2 justify-center" @click="submit"> <text class="font text-white">發送</text> </view> </view> </uni-popup> </view> </template> <script> import fGift from "../../components/live/f-gift.vue" import uniPopup from "../../components/uni-ui/uni-popup/uni-popup.vue" import fDanmu from "../../components/live/f-danmu.vue" export default { data(){ return { statusBarHeight : 0, content : "" } }, components: { fGift, uniPopup, fDanmu }, onLoad(){ //獲取通知欄的高度 let res = uni.getSystemInfoSync(); this.statusBarHeight = res.statusBarHeight; }, 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 : "九月直播666" // }) // id++; // },3000) }, methods:{ //關閉直播間,返回上一頁 back(){ uni.navigateBack({ delta: 1 }) }, openInput(){ this.$refs.input.open() }, submit(){ //發送內容為空,提示框不消失 if(this.content == ""){ return; } //發送彈幕 this.$refs.danmu.send({ id : Math.random()*100, name : "昵稱", content : this.content }) //清空輸入的內容 this.content = ""; //關閉輸入提示框 this.$refs.input.close() } } } </script> <style> .page{ flex : 1; } </style> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看