【JQuery】弹幕APP

作者: 雨水之后 | 来源:发表于2017-12-05 10:09 被阅读0次

    虽然我是一名实打实的产品喵,但是为了能够和程序猿们愉快地沟通(让撕逼再和谐一点),我自学了一些代码知识,写了一些不入流不靠谱不成熟的“三不”应用,随便扔在这里分享一下。

    简介

    弹幕确实是个有意思的东西,但它其实并不复杂,拥有一点前端基础的都能写出来。

    我写的这个弹幕APP也就只用了bootstrap和JQuery,外加一个叫wilddog(野狗云)的即时通讯服务器,实现了多人同时在线弹幕聊天。

    在这里可以强推一下wilddog野狗云,真的特别好用,不需要你有任何服务器知识,纯前端可以开发即时通讯、身份验证等多种应用程序,而且免费

    这个项目感觉很适合前端新手练手用,推荐一下哈~

    截图
    弹幕飞起中...
    代码
    $(document).ready(function() {
      
        //创建通讯实体
        //野狗云的使用方法你自己去他官网看案例啦~
        var configSync = {
        authDomain: 'wd3384719095ozfucu.wilddogio.com',
        syncURL: 'https://wd3384719095ozfucu.wilddogio.com/',
      };  
        wilddog.initializeApp(configSync);
        var danmu = wilddog.sync().ref('/msg');
        
        /*初始化变量*/
        //发送按钮
        var shoot = $(".shoot");
        //消息文本框
        var msg_txt = $(".msg");
        //清空按钮
        var clear = $(".clear");
        //弹幕面板
        var danmu_box = $(".danmu-box");
        //消息表格
        var danmu_table = $(".danmu-table > tbody");
        //获取随机整数
        function randomNum(min,max){
            var Range = max - min;
            var Rand = Math.random();
            var num = min + Math.round(Rand * Range);    //四舍五入
            return num;
        }
        //获取用户登入网站的时间点
        var enter_date = new Date();
        var enter_time_point = enter_date.getTime();
        
        //个位数前面加0
        function plusZero(x){
          if(x<10){
            return '0'+x;
          } else {
            return x.toString();
          }
        }
        //获取标准时间格式
        function getTime(deit){
          const y = deit.getFullYear();
          const m = plusZero(deit.getMonth()+1);
          const d = plusZero(deit.getDate());
          const h = plusZero(deit.getHours());
          const mi = plusZero(deit.getMinutes());
          return y + "." + m + "." + d + " " + h + ":" + mi;
        }
        //鼠标点击发送消息至通讯云
        shoot.click(function(){
            //获取消息
            var msg = $(".msg").val();
            var msg_date = new Date();
            var msg_time_point = msg_date.getTime();
            //如果文本框内有内容
            if(msg.length > 0){
                //发送至通讯云
                danmu.push({
                    "msg": msg,
                    "time": msg_time_point
                });
            } else {
                alert("不能发空消息的哦~");
            }
            //清空文本框
            msg_txt.val("");
        });
        
        //按下回车发送消息至通讯云
        msg_txt.keypress(function(e){     
            if(event.keyCode == "13"){
                //防止冒泡
                e.preventDefault();
                //绑定点击事件
                shoot.trigger("click");
               }
        });
        
        //实时监听通讯云并获取消息数据
        danmu.on("child_added",function(data){
            
            //包装消息进弹幕用DOM
            var msgs = data.val().msg;
            var msgs_dom = "<span class='danmu-message'>" + msgs + "</span>";
            //监听获取所有消息的发射时间点
            var msgs_time_point = data.val().time;
            console.log(data.val());
            //只有在进入网站以后被发出的消息才会被显示在弹幕面板内
            if(msgs_time_point > enter_time_point){
                //插入弹幕面板
                danmu_box.prepend(msgs_dom);
                //设置初始位置
                //获取随机位置
                var position = randomNum(50,400);  
                //获取随机颜色
                var color = randomNum(100000,999999);  
                //获取随机速度
                var speed = randomNum(10000,20000);
                $('.danmu-message').first().css({
                    right: '0px',
                    top: position,
                    color: '#' + color
                });
                //设置动画效果(位置、速度、颜色),并到位消失
                $('.danmu-message').first().animate({
                    left: '0px'
                }, speed, function() {
                    $(this).fadeOut();
                });
            } else {}
            
            //获取消息时间
            var msgs_time_obj = new Date(msgs_time_point);
            console.log(msgs_time_obj);
            var msgs_time = getTime(msgs_time_obj);
            console.log(msgs_time);
            //如果消息过长,则多余处用“...”代替显示
            if (msgs.length > 6) {
              msgs = msgs.substring(0, 6) + "...";
            }
            //包装消息进表格用DOM
            var msgs_table_dom = "<tr><td>" + msgs + "</td><td>" + msgs_time + "</td></tr>";
            //插入表格
            danmu_table.prepend(msgs_table_dom);
            });
            
        //清空消息(弹幕面板及通讯云)
        clear.click(function(){
            //清空通讯云
            danmu.remove();
            //清空弹幕面板
            danmu_box.empty();
            //清空表格
            danmu_table.empty();
        }); 
            
    });
    
    相关

    想看源代码的童鞋可以来CODING.NET获取,也可以直接去DEMO体验一下。


    THE END.

    相关文章

      网友评论

        本文标题:【JQuery】弹幕APP

        本文链接:https://www.haomeiwen.com/subject/fjeqixtx.html