vue3使用弹幕插件

news2024/9/21 18:47:28

1.安装插件

$ npm install vue3-danmaku --save

2.用法

<template>
  <vue-danmaku v-model:danmus="danmus" loop style="height:100px; width:300px;"></vue-danmaku>
</template>

<script setup>
import vueDanmaku from 'vue3-danmaku'
import { ref } from "vue";

const danmus = ref(['danmu1', 'danmu2', 'danmu3', '...'])
</script>

3.属性

参数说明类型可选值默认值
danmus弹幕元素列表,支持纯文本或者自定义对象(支持 v-model)Array字符串或对象[]
channels轨道数量Number0
autoplay是否自动播放Booleantrue
useSlot是否开启弹幕插槽Booleanfalse
loop是否开启弹幕循环Booleanfalse
fontSize弹幕字号(slot 模式下不可用)Number18
extraStyle额外样式(slot 模式下不可用)String
speeds弹幕速度(每秒移动的像素数)Number200
debounce弹幕刷新频率(ms)Number100
randomChannel随机选择轨道插入Booleanfalse
isSuspend是否开启弹幕悬浮暂停(试验型功能)Booleanfalse
top弹幕垂直间距(px)Number4
right弹幕水平间距(px)Number0

 4.内置方法

方法名说明参数
play开始/继续播放-
pause暂停弹幕播放-
stop停止播放并清空弹幕-
show弹幕显示-
hide弹幕隐藏-
reset重置配置-
resize容器尺寸改变时重新计算滚动距离(需手动调用)-
push发送弹幕(插入到弹幕列表末尾,排队显示)danmu 数据,可以是字符串或对象
add发送弹幕(插入到当前播放位置,实时显示)danmu 数据,可以是字符串或对象
insert绘制弹幕(实时插入,不进行数据绑定)danmu 数据,可以是字符串或对象
getPlayState获得当前播放状态

 5.Events

事件名说明返回值
list-end所有弹幕插入完毕-
play-end所有弹幕播放完成(已滚出屏幕)index(最后一个弹幕的下标)
dm-over开启弹幕悬浮暂停时,当进入弹幕,暂停时触发触发的弹幕对象元素
dm-out开启弹幕悬浮暂停时,当离开弹幕,恢复滚动时触发触发的弹幕对象元素

 6.Slot

<template>
  <vue-danmaku ref="danmaku" v-model:danmus="danmus" useSlot loop :channels="5">
    <template v-slot:dm="{ index, danmu }">
      <span>{{ index }}{{ danmu.name }}:{{ danmu.text }}</span>
    </template>
  </vue-danmaku>
</template>

<script>
import vueDanmaku from 'vue3-danmaku'

export default {
  setup(props) {
    const danmus = ref([{ avatar: 'http://a.com/a.jpg', name: 'a', text: 'aaa' }, { avatar: 'http://a.com/b.jpg', name: 'b', text: 'bbb' }, ...])

    return { danmus }
  },
}
</script>

7.例子

<template>
  <div class="big">
    <el-breadcrumb separator-class="el-icon-arrow-right" style="margin-bottom: 8px">
      <el-breadcrumb-item>首页</el-breadcrumb-item>
      <el-breadcrumb-item>借阅信息</el-breadcrumb-item>
    </el-breadcrumb>
    <el-card shadow="always">
      <div class="backgroundImg">
        <img src="../../assets/image/024.png" alt="" />
      </div>
      <vue-danmaku
        v-model:danmus="danmus"
        loop
        style="height: 700px; width: 1610px"
        ref="danmaku"
        :speeds="speeds"
      ></vue-danmaku>
      <div class="buts">
        <h3>弹幕控制中心</h3>
        <el-button round style="margin-bottom: 10px" @click="pause()">继续</el-button>
        <el-button type="primary" round style="margin-bottom: 10px" @click="pause()">
          暂停
        </el-button>
        <br />
        <el-button type="success" round style="margin-bottom: 10px" @click="show()">显示</el-button>
        <el-button type="info" round style="margin-bottom: 10px" @click="hide()">隐藏</el-button>
        <br />
        <el-button type="warning" round style="margin-bottom: 10px" @click="addspeeds()">
          加速
        </el-button>
        <el-button type="danger" round style="margin-bottom: 10px" @click="jianspeeds()">
          减速
        </el-button>
      </div>
    </el-card>
  </div>
</template>

<script setup>
import vueDanmaku from "vue3-danmaku";
import { ref } from "vue";
//弹幕速度
const speeds = ref(200);
//内容
const danmus = ref([
  "你好呀",
  "你太厉害了",
  "天才",
  "阿斯顿",
  "士大夫大师傅大三法",
  "的撒范德萨是发的 ",
  "啊的撒范德萨范德萨发",
  "大师傅大师傅撒旦重复",
  "的撒范德萨",
  "asdf das",
  "asdfds fds",
  "asdf d ",
  "大三",
]);
//弹幕组件
const danmaku = ref(null);
//继续播放弹幕
const dplay = () => {
  danmaku.value.play();
};
//暂停播放弹幕
const pause = () => {
  danmaku.value.pause();
};
//显示弹幕
const show = () => {
  danmaku.value.show();
};
//隐藏弹幕
const hide = () => {
  danmaku.value.hide();
};
//弹幕加速
const addspeeds = () => {
  console.log(speeds.value);
  speeds.value += 10;
};
//弹幕减速
const jianspeeds = () => {
  console.log(speeds.value);
  speeds.value -= 10;
};
</script>

<style>
.big {
  position: relative;
}
.backgroundImg {
  position: absolute;
  height: 700px;
  width: 1610px;
  img {
    height: 100%;
    width: 100%;
    opacity: 0.7;
  }
}

.buts {
  position: absolute;
  left: 680px;
  top: 260px;
}
</style>

官网 vue3-danmaku - npm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1933145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker构建LNMP环境并运行Wordpress平台

1.准备Nginx 上传文件 Dockerfile FROM centos:7 as firstADD nginx-1.24.0.tar.gz /opt/ COPY CentOS-Base.repo /etc/yum.repos.d/RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make && \useradd -M -s /sbin/nologin nginx && \cd /o…

数据分析01——系统认识数据分析

1.数据分析的全貌 1.1观测 1.1.1 观察 &#xff08;1&#xff09;采集数据 a.采集数据&#xff1a;解析系统日志 当你在看视频的时候———就会产生日志———解析日志———得到数据 b.采集数据&#xff1a;埋点获取新数据&#xff08;自定义记录新的信息&#xff09; 日志…

redis之resp界面连接

解压资源 连接成功

目标检测入门:4.目标检测中的一阶段模型和两阶段模型

在前面几章里&#xff0c;都只做了目标检测中的目标定位任务&#xff0c;并未做目标分类任务。目标检测作为计算机视觉领域的核心人物之一&#xff0c;旨在从图像中识别出所有感兴趣的目标&#xff0c;并确定它们的类别和位置。现在目标检测以一阶段模型和两阶段模型为代表的。…

【spring boot】初学者项目快速练手

一小时带你从0到1实现一个SpringBoot项目开发_哔哩哔哩_bilibili 一、基础知识 1.注解 二、简介 三、项目结构 四、代码结构 1.生成Spring Boot项目的主程序 &#xff08;1&#xff09;在官网下载 Spring Initializr 快速生成一个初始的项目代码&#xff0c;会生成一个de…

Java二十三种设计模式-抽象工厂模式(3/23)

抽象工厂模式&#xff1a;复杂系统的灵活构建者 引言 在软件开发中&#xff0c;抽象工厂模式是一种提供接口以创建相关或依赖对象族的创建型设计模式。这种模式允许客户端使用一个共同的接口来创建不同的产品族&#xff0c;而无需指定具体类。 基础知识&#xff0c;java设计模…

SSE(Server Sent Event)实战(3)- Spring Web Flux 实现

上篇博客 SSE&#xff08;Server Sent Event&#xff09;实战&#xff08;2&#xff09;- Spring MVC 实现&#xff0c;我们用 Spring MVC 实现了简单的消息推送&#xff0c;并且留下了两个问题&#xff0c;这篇博客&#xff0c;我们用 Spring Web Flux 实现&#xff0c;并且看…

MySQL条件查询(DQL)

在此之前先给大家看一下我的表里面的数据&#xff0c;以方便接下来的讲解 还需要大家先熟悉这里面的条件 1.语法 SELECT 字段列表 FROM 表名 WHERE 条件列表 例如 1.查询年龄等于20的员工 select * from emp where age 20; 2.查询年龄小于等于20的员工信息 select * fr…

PPOCRLabel安装及使用

一、环境准备 1、 使用anaconda创建一个Python3.7.x的环境 # 在命令行输入以下命令&#xff0c;创建名为paddle_env的环境 conda create --name paddle_env python3.7 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/输入以下命令可以查看我们所创建的所…

【作业】 贪心算法1

Tips:三题尚未完成。 #include <iostream> #include <algorithm> using namespace std; int a[110]; int main(){int n,r,sum0;cin>>n>>r;for(int i0;i<n;i){cin>>a[i];}sort(a0,an);for(int i0;i<n;i){if(i>r){a[i]a[i-r]a[i];}suma[…

借助Aspose.Note笔记工具,在Java 中更改 OneNote 中的样式

Microsoft OneNote是一款功能强大的笔记工具。学习如何使用 Java 更改样式&#xff0c;将您的 OneNote 体验提升到一个新的水平&#xff01;在本指南中&#xff0c;我们将向您展示如何使用 Java 更改 OneNote 文档中的样式以增强可读性。本指南将为您提供分步说明&#xff0c;以…

k8s集群 安装配置 Prometheus+grafana

k8s集群 安装配置 Prometheusgrafana k8s环境如下&#xff1a;机器规划&#xff1a; node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号&…

【算法/天梯赛训练】天梯赛模拟题集

L1-009 N个数求和 #include <iostream> #include <algorithm>using namespace std;typedef long long ll; const int N 105;typedef struct node {ll x, y; }node; node a[N];ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a; }int main() {int n;cin >>…

三伏天,艾灸这2处,既能祛寒湿、还能补阳气,效果是平时的好几倍~

这周开始&#xff0c;我们就进入了最炎热的三伏天&#xff01;今年的三伏整整40天&#xff0c;高温闷热&#xff0c;汗流浃背&#xff0c;想想都崩溃~ 最热最难熬的这段时间&#xff0c;也是天赐的良机&#xff01;此时阳气达到一年中的鼎盛&#xff0c;人体阳气也最为充沛&…

金航标kinghelm萨科微slkor总经理宋仕强(Huaqiangbei Songshiqiang )为大家介绍连接器时说

金航标kinghelm萨科微slkor总经理宋仕强&#xff08;Huaqiangbei Songshiqiang &#xff09;为大家介绍连接器时说&#xff0c;连接器通常可以分为以下几大类&#xff1a;1. 矩形连接器&#xff0c;这种连接器的外形通常呈矩形&#xff0c;具有较多的接触点&#xff0c;可传输多…

vue3中引入、封装和使用svg矢量图的实现示例

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是码喽的自我修养&#xff01;今天给大家分享vue3中引入和封装svg矢量图的实现示例&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到带大家&#xff0c;欢迎…

[python]pycharm设置清华源

国内镜像源有以下几个&#xff0c;因为都是国内的&#xff0c;基本速度差不了太多。 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&#xff1a;http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣&…

【单片机毕业设计选题24071】-基于STM32的超声波驱鸟器设计

系统功能: 系统操作说明&#xff1a; 上电后OLED显示 “欢迎使用智能驱鸟系统请稍后”&#xff0c;两秒后进入正常显示界面。 如果红外避障模块检测到物体后OLED显示“Detected”&#xff0c;蜂鸣器报警&#xff0c;继电器吸合 超声波换能器发出超声波。如果红外避障模块未…

synchronized的实现原理和锁升级 面试重点

1.synchronized的实现原理 synchronized是Java 中的一个很重要的关键字&#xff0c;主要用来加锁&#xff0c;synchronized所添加的锁有以下几个特点。synchronized的使用方法比较简单&#xff0c;主要可以用来修饰方法和代码块。根据其锁定的对象不同&#xff0c;可以用来定义…

前端基础之JavaScript学习——运算符、分支/循环语句、数组

大家好我是来自CSDN的前端寄术区博主PleaSure乐事&#xff0c;今天我们继续有关JavaScript的学习&#xff0c;使用的编译器为vscode&#xff0c;浏览器为谷歌浏览器。大家使用webstorm等编译器或其他浏览器效果效果问题不大&#xff0c;都可以使用。 目录 运算符 赋值运算符 …