@qier-player/danmaku
Version:
Powerful danmaku, support many features.
49 lines (48 loc) • 1.38 kB
TypeScript
import { EventEmitter } from '../utils/eventmitter';
import type { Danmu, Commander, DanmakuOptionsInit } from '../types';
import Track from '../track';
interface EachCommanderHandler<T extends Danmu> {
(track: Track<T>, index: number, array: Track<T>[]): void;
}
export default abstract class Base<T extends Danmu> extends EventEmitter {
protected trackWidth: number;
protected trackHeight: number;
protected duration: number;
protected tracksCnt: number;
protected tracks: Track<T>[];
waitingQueue: T[];
constructor(config: Commander, options: DanmakuOptionsInit);
/**
* 遍历所有轨道并回调
*/
each(handler: EachCommanderHandler<T>): void;
/**
* resize
* @param {Number} [height] 每个轨道高度
*/
resize(width?: number, height?: number): void;
/**
* 添加弹幕到等待队列
* @param {Object} danmu 弹幕对象
* @return {Boolean} 是否添加成功
*/
abstract add(danmu: T): boolean;
/**
* 寻找合适的轨道
* @return {Number} 合适轨道的下标
*/
abstract findTrack(): number;
/**
* 从等待队列中抽取弹幕并放入弹幕
*/
abstract extractDanmu(): void;
/**
* 渲染函数
*/
abstract render(): void;
/**
* 重置清空
*/
abstract reset(): void;
}
export {};