微信小程序——滾動字幕效果的實現(xiàn)

一哼鬓、效果圖


image.png

二、代碼
wxml:

<view>
    <video src="{{imgUrls}}"  class="slide-image"></video>
</view>
  

<!--彈幕開關-->
<view class="barrage-Switch" style="color:{{barrageTextColor}};">
   <switch id="switch_" bindchange="barrageSwitch"/>
   <text>彈幕</text>
</view>

<!--彈幕輸入框-->
 <view class="barrage-inputText" style="display:{{barrage_inputText}}">
     <view class="barrage-input">
       <input bindblur="bind_shoot" value="{{bind_shootValue}}"/>
     </view>
     <view class="barrage-shoot">
         <button class="shoot" size="mini" bindtap="shoot">發(fā)射</button>
     </view>
 </view>

<!--彈幕上單文字-->
<view class="barrage-fly" style="display:{{barragefly_display}}">
 <block wx:for="{{barrage_style}}" wx:key="unique">
  <text class="barrage-textFly" style="color:{{item.barrage_shoottextColor}};left:{{item.barrage_phoneWidth}}px;top:{{item.barrageText_height}}px;">{{item.barrage_shootText}}</text>
 </block>
</view>

js:

var barrage_style_arr = [];
var barrage_style_obj ={};
var phoneWidth = 0;
var timers = [];
var timer ;
Page({
 data: {
   imgUrls: 'http://kqbb1688.com/video/10fenzhong.mp4',
   indicatorDots: true,
   autoplay: true,
   interval: 3000,
   duration: 500,
   barrageTextColor:"#D3D3D3",
   barrage_inputText:"none",
   barrage_shoottextColor:"black",
   bind_shootValue:"",
   barrage_style:[],
   barragefly_display:"none",
 },

   // 生命周期函數(shù)--監(jiān)聽頁面加載

 onLoad:function(options){
   var that = this;
   //獲取屏幕的寬度
     wx.getSystemInfo({
       success: function(res) {
          that.setData({
               barrage_phoneWidth:res.windowWidth-100,
          })
       }
     })
     phoneWidth = that.data.barrage_phoneWidth;
     console.log(phoneWidth);
 },
 //是否打開彈幕...
 barrageSwitch: function(e){
   console.log(e);
   //先判斷沒有打開
   if(!e.detail.value){
   //清空彈幕
     barrage_style_arr = [];
     //設置data的值
     this.setData({
       barrageTextColor:"#D3D3D3",
       barrage_inputText:"none",
       barragefly_display:"none",
       barrage_style:barrage_style_arr,
     });
     //清除定時器
     clearInterval(timer);
   }else{
     this.setData({
       barrageTextColor:"#04BE02",
       barrage_inputText:"flex",
       barragefly_display:"block",
     });

     //打開定時器
       timer= setInterval(this.barrageText_move,800)
   }
 },

 

 //發(fā)射按鈕

 shoot: function(e){
   //字體顏色隨機
   var textColor = "rgb("+parseInt(Math.random()*256)+","+parseInt(Math.random()*256)+","+parseInt(Math.random()*256)+")";
   // //設置彈幕字體的水平位置樣式
   // var textWidth = -(this.data.bind_shootValue.length*0);
   //設置彈幕字體的垂直位置樣式
   var barrageText_height = (Math.random())*266;
    barrage_style_obj = {
     // textWidth:textWidth,
     barrageText_height:barrageText_height,
     barrage_shootText:this.data.bind_shootValue,
     barrage_shoottextColor : textColor,
     barrage_phoneWidth:phoneWidth
   };

   barrage_style_arr.push(barrage_style_obj);
   this.setData({
     barrage_style:barrage_style_arr,        //發(fā)送彈幕
     bind_shootValue:""                    //清空輸入框
   })
     //定時器  讓彈幕動起來
     //  this.timer= setInterval(this.barrageText_move,800);
 },

 

//定時器  讓彈幕動起來
 barrageText_move: function(){
   var timerNum = barrage_style_arr.length;
   var textMove ;
   for(var i=0;i<timerNum;i++){
      textMove = barrage_style_arr[i].barrage_phoneWidth;
      console.log("barrage_style_arr["+i+"].barrage_phoneWidth----------:"+barrage_style_arr[i].barrage_phoneWidth);
      textMove = textMove -20;
     barrage_style_arr[i].barrage_phoneWidth = textMove;
     //走完的移除掉
     if(textMove<=-100){
//         clearTimeout(this.timer);
         barrage_style_arr.splice(0,1);
         i--;
         //全部彈幕運行完
         if(barrage_style_arr.length==0){
           this.setData({
             barrage_style:barrage_style_arr,
           })
           // clearInterval(this.timer);
           return;
         }

     }
     console.log("第"+i+"個定時器:",textMove);
     this.setData({
       barrage_style:barrage_style_arr,
     })
   }
 },

 

 //綁定發(fā)射輸入框,將值傳遞給data里的bind_shootValue绿语,發(fā)射的時候調用

 bind_shoot:function(e){
   this.setData({
     bind_shootValue:e.detail.value
   })
 },
})

wxss:

.slide-image {
  width: 100%;
}
/* 彈幕選擇按鈕的操作*/

.barrage-Switch {
  position: absolute;
  bottom: 10px;
  right: 10px;
  z-index: 2;
}

/* 彈幕輸入框的操作*/
.barrage-inputText {
  position: absolute;
  display: flex;
  background-color: #BFBFBF;
  width: 100%;
  height: 40px;
  flex-direction: row;
  nav-index: 2;
  justify-content: center;
  align-items: center;
  bottom: 10%;
}

.barrage-input {
  background-color: white;
  width: 60%;
  height: 30px;
}

.barrage-shoot {
  margin-left: 10px;
  width: 25%;
  height: 30px;
}

.shoot {
  width: 100%;
  color: black;
}

/*彈幕飛飛飛*/
.barrage-fly {
  z-index: 3;
  height: 80%;
  width: 100%;
  position: absolute;
  top: 0;
}

.barrage-textFly {
  position: absolute;
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末钮孵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子睡陪,更是在濱河造成了極大的恐慌,老刑警劉巖夕凝,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宝穗,死亡現(xiàn)場離奇詭異,居然都是意外死亡码秉,警方通過查閱死者的電腦和手機逮矛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來转砖,“玉大人须鼎,你說我怎么就攤上這事「幔” “怎么了晋控?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姓赤。 經(jīng)常有香客問我赡译,道長,這世上最難降的妖魔是什么不铆? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任蝌焚,我火速辦了婚禮,結果婚禮上誓斥,老公的妹妹穿的比我還像新娘只洒。我一直安慰自己,他們只是感情好劳坑,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布毕谴。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涝开。 梳的紋絲不亂的頭發(fā)上循帐,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音忠寻,去河邊找鬼惧浴。 笑死,一個胖子當著我的面吹牛奕剃,可吹牛的內容都是我干的。 我是一名探鬼主播捐腿,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼纵朋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茄袖?” 一聲冷哼從身側響起操软,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宪祥,沒想到半個月后聂薪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蝗羊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年藏澳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耀找。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡翔悠,死狀恐怖,靈堂內的尸體忽然破棺而出野芒,到底是詐尸還是另有隱情蓄愁,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布狞悲,位于F島的核電站撮抓,受9級特大地震影響,放射性物質發(fā)生泄漏摇锋。R本人自食惡果不足惜丹拯,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乱投。 院中可真熱鬧咽笼,春花似錦、人聲如沸戚炫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至施掏,卻和暖如春钮惠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背七芭。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工素挽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狸驳。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓预明,卻偏偏與公主長得像,于是被迫代替她去往敵國和親耙箍。 傳聞我的和親對象是個殘疾皇子撰糠,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350