1.0.7 • Published 3 years ago

easy-danmaku-js v1.0.7

Weekly downloads
5
License
MIT
Repository
github
Last release
3 years ago

easyDanmaku

介绍

A Danmaku plugin for the web,一个用于web端的弹幕插件

特点

支持TypeScript、使用简单、使用css3过渡动画实现,弹幕流畅不卡顿、核心代码压缩后仅7kb。

安装

  1. LINK
<!-- 未压缩 -->
<script src="https://pprory.github.io/easyDanmaku/demo/easy-Danmaku.js"></script>
<!-- 压缩后编译成es5版本 -->
<script src="https://pprory.github.io/easyDanmaku/demo/easy-Danmaku.min.js"></script>
  1. NPM
$  npm install easy-danmaku-js --save

Demo预览地址

弹幕初始化属性

属性类型说明默认值
elstring弹幕所挂载的父节点-
wrapperStylestring所有弹幕初始样式default-style
linenumber弹幕行数10
speednumber弹幕速度5
colourfulboolean彩色弹幕false
runtimenumber循环弹幕播放时长10
loopboolean是否循环播放false
coefficientnumber弹幕密度系数1.38
hoverboolean鼠标hover时是否暂停播放弹幕false

弹幕事件

事件回调参数返回值说明
onCompletevoidvoid循环播放一轮或者批量弹幕插入完毕触发
onHover所hover的dom对象void鼠标hover在弹幕上时触发

弹幕方法

方法名说明参数例子
send发送单条弹幕(弹幕内容可用HTML标签包裹使用data-**标识特定数据)弹幕内容,弹幕样式,回调函数send('内容','container-style',function(e){})
centeredSend发送居中弹幕弹幕内容, 弹幕样式, 持续时间(ms), 回调函数centeredSend('内容','container-style',3000,function(e){})
batchSend发送批量弹幕(不包含头像)弹幕内容数组例,是否包含头像,默认样式batchSend('内容一','内容二',false,'container-style')
batchSend发送批量弹幕(包含头像)弹幕内容数组例,是否包含头像,默认样式batchSend({avatar:url,content:'弹幕内容'},true,'container-style')
play播放屏幕中所有弹幕--
pause暂停屏幕中所有弹幕--

例子

ps : 更多细节可查阅包文件夹中的demo

在Vue中使用(React,Angular中使用方式类似)

<template>
    <div id='container'></div>
</template>
<script>
    import easyDanmaku from 'easy-danmaku-js';
    export default {
        //~~~
        mounted() {
            const Danmaku = new easyDanmaku({
                el:'#container',                        //弹幕挂载节点
                colourful:true,                         //彩色弹幕
                line:10,                                //弹幕行数
                wrapperStyle:'danmaku-wrapper',         //默认弹幕样式
                speed:5,                                //弹幕播放速度
                runtime:3,                              //播放一次的时常
                loop:true,                              //开启循环播放
                hover:true,                             //鼠标移入悬停
                onComplete:()=> {                       //播放结束
                    console.log('end');
                },                                      //hover时 参数为该悬停元素
                onHover:(dom) => {
                    console.log(dom);
                }
            })
            const data = ['danmaku1','danmaku2','danmaku3','danmaku4','danmaku5','danmaku6']
            Danmaku.batchSend(data)
        }
        // ~~~
    };
</script>
<style>
#container{
    width:600px;
    height:400px;
    margin:0 auto;
}
.danmaku-wrapper{
    background: greenyellow;
    border-radius: 8px;
}
</style>
    // 弹幕内容, 弹幕样式, 回调函数
    Danmaku.send('弹幕内容','danmaku-wrapper',(e)=>{
        alert('end!');
        console.log(e);
    })
    const Danmaku2 = new EasyDanmaku({
        el:'#container2',
        colourful:true,
        line:10,
        wrapperStyle:'danmaku-wrapper',
        speed:3,
        hover:true,
        onComplete:function(){
            console.log('单次批量弹幕插入完毕');
            send();
        }
    })
    function send(){
        const data = ['danmaku1','danmaku2','danmaku3','danmaku4','danmaku5','danmaku6']
        Danmaku2.batchSend(data)
    }
    send();
    Danmaku.centeredSend('弹幕内容','danmaku-wrapper',1000,(e)=>{
        alert('end!');
        console.log(e);
    })

License

MIT

Copyright (c) 2020-present, Peng Pan

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago