JS弹幕代码剖析

如今很多直播软件和视频都有弹幕功用,让我们来看看并剖析是怎样完成的。

这边我重要剖析下js的代码,想看源码的朋侪奉上链接,http://sandbox.xinfan.org/xdd…

HTML代码以下(css代码就不展现了,想看的直接看源码吧):

<div id="main" class="container">
        <p class="p0">啦啦啦啦啦啦啦</p>
        <p class="p1">啦啦啦啦啦啦啦</p>
    </div>
    <div class="footer">
        <input id="ipt" class="ipt" type="text" placeholder="说点什么?"/>
        <button id="launch" class="launch" type="button" onclick="Leave()">发射</button>
        <button id="clear" class="clear" type="button">清屏</button>
    </div>
</div>

JS代码以下:

    var num = 2;
    //声清楚明了num=2
    var _p = document.getElementsByTagName("p");
    //猎取标签p.
    var main = document.getElementById("main");
    //猎取Id为mian的标签
    function Leave(){
        var colors = ["red","orange","yellow","pink","green"];
        //贮存5个色彩
        var ipt = document.getElementById("ipt");
        //猎取id为ipt的标签
        var launch = document.getElementById("launch");
        //猎取id为launch的标签
        var creat_p = document.createElement("p");
        //建立一个p标签
        main.appendChild(creat_p).innerText = ipt.value;
        //往main子集放一个p标签而且p标签的文本为ipt的值
        ipt.value = "";
        //初始化ipt
        creat_p.className = "p" + num;
        //建立的p标签设置class为p2,p3,p4以此类推
        num++;
        //实行一次加上1.
        var _ran = Math.floor(Math.random()*1000);
        //声明个0-999的随机数.
        var F_ran = Math.floor(Math.random()*5)+15;
        //声明个15-19随机数 
        var T_ran = _ran%11;
        //声明11个随机数,0-10;
        var C_ran = _ran%5;
        //声明5个随机数,0-4;
        creat_p.style.top = 30*T_ran + "px";
        //新建立的p标签给上一个top值,0-300px;
        creat_p.style.color = colors[C_ran];    
        //新建立的p标签给上一个色彩,colors数组内里随机一个。
        creat_p.style.fontSize = F_ran + "px";
        //新建立的p标签给上一个字体大小15-19px;
    }
    var speeds = {};
    //声明一个空数组.
    function Speed(){
    //建立随机速率的函数
        for (var i=0;i<_p.length;i++) {
            var name = _p[i].className;
            //猎取各个p标签的class值.
            speed = speeds[name];
            //将name传入speeds对象,并赋值给speed.
            if(speed == null){
            //假如speed即是null实行以下代码
                var S_ran = Math.floor(Math.random()*5)+1;
                //声明个随机数,1-5.
                speeds[name] = S_ran;        
                //并将随机数赋值给speeds对象(json)的属性
            }
            var l = _p[i].style.left;
            //猎取p标签的left值.
            if(l == 0){
                l = "0px";
            //假如l即是0,就给0加上px.    
            }
            var s = parseInt(l) +speed;
            //剖析l转化为数字,再加上一个随机数,以保证弹幕发送字体挪动速率差别.
            _p[i].style.left = s + "px";
            //给各个p标签加上随机数
            if(main.offsetWidth < _p[i].offsetLeft){
            //假如p标签挪动的位置大于mian的宽度
                main.removeChild(_p[i]);
                //删除这个p标签
                clearInterval();
                //消灭定时器
            }
            
        }
    }

window.onload = function(){
    setInterval(Speed,50);
    //每50毫秒实行一下Speed函数    
}


此次重要讲解了每行代码的作用,并没详细剖析代码作用和思绪,有疑问的朋侪能够私信我,配合进修!

    原文作者:徐鹏云
    原文地址: https://segmentfault.com/a/1190000008707119
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞