rc-danmuku
Version:
80 lines (79 loc) • 2.4 kB
TypeScript
import React from 'react';
declare type BulletNodeType = React.ReactElement | string;
declare type OptionsType = {
rowHeight?: number;
speed?: number;
opacity?: number;
maxRow?: number;
minGapWidth?: number;
fontSize?: number;
onBulletIn?: () => void;
onBulletOut?: () => void;
onQueueRunOut?: () => void;
};
declare type EmitOptionsType = {
color?: string;
};
declare class Danmaku {
static DEFAULT_ROW_HEIGHT: number;
static DEFAULT_SPEED: number;
static DEFAULT_FONTSIZE: number;
static DEFAULT_OPACITY: number;
static DEFAULT_GAP_WIDTH: number;
private container;
width: number;
height: number;
rowHeight: number;
trackCount: number;
speed: number;
fontSize: number;
opacity: number;
minGapWidth: number;
allPaused: boolean;
isDestroyed: boolean;
private options;
private trackList;
private queue;
private isRunningWhenPageHide;
static containerClassName: string;
constructor(ele: string | HTMLElement, options?: OptionsType);
static numberIsGreaterThanZero: (number: number | undefined) => boolean;
static optionsParamsCheck(options?: OptionsType): void;
private visibilityChangeEventHandle;
private getTrackIndex;
/**
* 立即发送弹幕到屏幕上,自动寻找最空闲的轨道,若没有空闲轨道则可能有重叠弹幕
* @param node 要发送的React组件或者文本
*/
emit(node: BulletNodeType, options?: EmitOptionsType): void;
private hasFreeTrack;
private popBulletToFreeTrack;
/**
* 当有空闲弹幕轨道时,直接发送弹幕,效果通emit方法一样,
* 若全部轨道都占用,则将弹幕暂存到队列中,待空闲后再依次放出
* @param node
*/
push(node: BulletNodeType, options?: EmitOptionsType): void;
pushAll(nodeArr: Array<BulletNodeType>, options?: EmitOptionsType): void;
/**
* pause
*/
pause(): void;
/**
* resume
*/
resume(): void;
/**
* destroy
*/
destroy(): void;
/**
* 获取剩余还没发出的弹幕数量
*/
getRestAmount(): number;
/**
* 清空弹幕队列(只能清空排队中还未发出的弹幕)
*/
clearQueue(): void;
}
export default Danmaku;