• mpvue小程序开发之 实现一个弹幕评论


     先上图

    就是一个简单的弹幕发送功能

    弹幕区的页面:

          <div class="content" v-show="doommData.length">
            <div class="textLeft"></div>
            <div class="textItem">
              <p class="text aon" v-if="item.display" v-for="(item,index) in doommData" :key="index" :id="item.id" :style="{'animation-duration':item.time+'s', top:item.top+'%',color:'#333',background:item.result.bgColor}">
                <image :src="item.result.faceImage" class="headImg" />
                <span class="name">{{item.result.name}}:</span>
                <span class="text">{{item.result.sendMessage}}</span>
              </p>
            </div>
          </div>

    弹幕区的代码逻辑:

    // 弹幕参数
    class Doomm {
      constructor(result, top, time, color, id) {
        //内容,顶部距离,运行时间,颜色,id(参数可自定义增加)
        /**
         * result数据结构
         * faceImage:"",
         * bgColor: "#57B2FF",
         * sendMessage: "66666",
         * sendTime: "2019-11-06 15:10:15",
         * name: "eve"
         *
         */
        this.result = result;
        this.top = top;
        this.time = time;
        this.color = color;
        this.display = true;
        this.id = id;
      }
    }
    //随机字体颜色
    getRandomColor() {
      let rgb = [];
      for (let i = 0; i < 3; ++i) {
        let color = Math.floor(Math.random() * 256).toString(16);
        color = color.length == 1 ? "0" + color : color;
        rgb.push(color);
      }
      return "#" + rgb.join("");
    }
    //节流函数
    function throttle(fn, wait) {
      var canUse = true; // 设置一个开关
      return function(item) {
        if (!canUse) {
          return false;
        } // 如果开关已经关掉了就不用往下了
        canUse = false; // 利用闭包刚进来的时候关闭开关
        setTimeout(() => {
          fn(item);
          canUse = true; // 执行完才打开开关
        }, wait);
      };
    }
        //添加弹幕列表
        async barrageCyclic() {
          await this.Arr.forEach((ele, i) => {
            //往弹幕列表里面添加数据
            this.doommList.push(
              new Doomm(
                ele,
                Math.ceil(Math.random() * 70 + 10),
                Math.floor(Math.random() * 20 + 10),
                getRandomColor(),
                i
              )
            );
          });
          this.doommData = this.doommList;
        },
  • 相关阅读:
    tomcat请求流程浅解
    jdk8为啥lambda表达式建议你用冒号形式调用方法
    打印目录树形结构
    类斐波那契数列的java实现
    sping boot 如何将外部引入的jar包打到fat jar里面
    java多线程之生产者消费者
    Hadoop、Hbase、ZooKeeper的搭建
    java 静态代码块、构造代码块、构造函数调用顺序
    MyBatis的 or 和and 问题
    mysql
  • 原文地址:https://www.cnblogs.com/style-hyh/p/11919241.html
Copyright © 2020-2023  润新知