Skip to content

渲染配置用于控制全局的渲染效果。

涉及的 API

ts
export type RendererOptions = {
  // 渲染相关配置
  renderConfig?: Partial<RenderConfig>;
}

export type RenderConfig = {
  // 自定义弹幕过滤器,返回 false,弹幕就会被过滤掉
  barrageFilter?: (barrage: BaseBarrage) => boolean;
  // 重要弹幕 边框 的自定义渲染函数
  priorBorderCustomRender?: RenderFn;

  // Canvas 元素默认和 container 等高,为了避免弹幕渲染遮挡住播放器的控制栏,
  // 可以设置减少一定的高度
  heightReduce: number;
  // 弹幕运行速度,仅对滚动弹幕有效(每秒多少像素)
  speed: number;
  // 显示区域,只针对滚动弹幕,有效值 0 ~ 1
  renderRegion: number;
  // 滚动弹幕水平最小间距
  minSpace: number;
  // 是否重叠,只适用于滚动弹幕
  avoidOverlap: boolean;

  // 透明度,有效值 0 ~ 1
  opacity: number;
  // 弹幕字体
  fontFamily: string;
  // 字体粗细
  fontWeight: string;
}

/**
 * 自定义 render 函数
 */
export type RenderFn = (options: CustomRenderOptions) => void;

/**
 * 自定义 render 函数的参数
 */
export type CustomRenderOptions = {
  // 渲染上下文
  ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;
  // 渲染的弹幕实例
  barrage: BaseBarrage;
  // 渲染器实例
  br: BarrageRenderer;
  // 缓存获取图片的工厂方法
  imageElementFactory: (url: string) => HTMLImageElement,
}

declare class BarrageRenderer {
  /**
   * 设置渲染配置(可以部分设置配置)
   * @param renderConfig 渲染配置
   */
  setRenderConfig(renderConfig: Partial<RenderConfig>): void;
}

具体作用

  • barrageFilter:弹幕过滤器,可实现相关弹幕的屏蔽操作,例如不渲染滚动弹幕。
  • priorBorderCustomRender:重要弹幕边框的自定义渲染函数,如果没有配置的话,默认会简单渲染一个 #89D5FF 颜色的矩形边框。
  • speed:用于配置滚动弹幕的运动速度。
  • renderRegion:用于配置滚动弹幕能够渲染多大比例的 canvas 区域,可借此实现半屏渲染或 1/4 屏的渲染滚动弹幕。
  • minSpace:设置前后滚动弹幕的最小间距,避免挨得太近。
  • avoidOverlap:当设置为 true 的时候,会使用虚拟轨道算法对滚动弹幕进行布局计算,防止滚动弹幕相互重叠。
  • opacity:设置全局的渲染透明度,有的用户喜欢半透明的弹幕,可以借此进行实现。
  • fontFamily:设置弹幕渲染时使用的字体。
  • fontWeight:设置弹幕渲染时使用的字体粗细。

Released under the MIT License.