easyDanmaku.js弹幕插件使用详解(长期更新)

介绍

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

特点

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

安装

  1. LINK
<script src="http://panchuanpeng.cn/easyDanmaku/easyDanmaku.js"></script>
  1. NPM
$  npm install easy-danmaku-js --save
Demo预览地址
Github源码地址(欢迎大家帮我点star(抱拳))
2.在vue中使用(React,Angular中使用方式类似)
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时 参数为该悬停元素(初始化属性hover必须为true)
                onHover:(dom) => {
                    console.log(dom);
                }
            })
            /*循环播放弹幕 前提初始化属性hover:true*/
            const data = ['danmaku1','danmaku2','danmaku3','danmaku4','danmaku5','danmaku6']
            Danmaku.batchSend(data)

			/*发送单条弹幕*/
			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();
			/*居中弹幕*/
			setTimeout(() => {
                           			//弹幕内容  弹幕样式  持续时间(ms) 回调函数
		        Danmaku.centeredSend('弹幕内容','danmaku-wrapper',1000,(e)=>{
		            alert('end!');
		            console.log(e);
		        })
		    },2000)
        }
        // ~~~
    };

弹幕初始化属性

属性

类型

说明

默认值

el

string

弹幕所挂载的父节点

-

wrapperStyle

string

所有弹幕初始样式

default-style

line

number

弹幕行数

10

speed

number

弹幕速度

5

colourful

boolean

彩色弹幕

false

runtime

number

循环弹幕播放时长

10

loop

boolean

是否循环播放

false

coefficient

number

弹幕密度系数

1.38

hover

boolean

鼠标hover时是否暂停播放弹幕

false

弹幕事件

事件

参数

返回值

说明

onComplete

void

void

循环播放一轮或者批量弹幕插入完毕触发

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


作者:rory
日期:2020年11月26日