vue3使用弹幕插件

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="dplay()">继续</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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值