Skip to content

Latest commit

 

History

History
180 lines (146 loc) · 6.91 KB

CommentProperties.md

File metadata and controls

180 lines (146 loc) · 6.91 KB

弹幕抽象对象 ICommentData

为了统一各个解析器的输出,弹幕在经过解析器后将会被解析为一个个独立的对象。 这些对象将会有自己的一系列属性,并且用于构造 CommentObject。 这里介绍的是 弹幕抽象对象 的属性。

注意:这些属性的名称可能与解析器中不同,但是经过弹幕文件解析器后,生成一套可渲染的弹幕对象。 各个解析器的内部实现不同,我们无法进行列举其属性对应得弹幕属性。

概览

所有的必选参数均表示为 加粗 字体。

基础:

  • text 文字
  • mode 类型
  • stime 开始时间
  • size 字号
  • color 颜色

附加显示:

  • border 是否有边框
  • dur 生命周期
  • shadow 文字钩边
  • font 文字字体
  • opacity 不透明度

Metadata相关:

  • dbid 绝对编码
  • date 发送时间
  • pool 弹幕池编号
  • hash 作者哈希

定位相关:

  • x 横坐标
  • y 纵坐标
  • position 坐标定位
  • rX 在X轴转动量
  • rY 在Y轴转动量
  • rZ 在Z轴转动量
  • align 对齐

移动/动画相关:

  • movable 是否可动
  • motion 动作序列
    • from
    • to
    • dur
    • delay
    • (easing)
  • alpha 不透明度渐变

基本格式

基本原始格式即把上述参数通过一个 POJO (Plain old JavaScript Object),也就是一个基础类 Object 进行实现。

{
    "text": "...",
    "mode": 1,
    "stime": 10,
    "size": 25,
    "color": 0xffffff,
    ...
}

必选参数介绍

text

文字参数,文字参数由弹幕解析器生成,其可能来源于弹幕文件本身,或者弹幕文件高级弹幕的配置中截取。 文字参数将直接表示生成弹幕中所含的文字,如果需要有特殊转义字符(如 /n = 换行), 它们必须被事先处理掉。 注意:图片弹幕中的 text 字段表示图片的URL。

mode

弹幕类型参数,类型参数请参见 CommentTypes 介绍的相关类型对应表。 不同的类型参数可能会决定可选参数读取哪些。在很多时候,一些特殊的类型弹幕的 一些可选参数项将变为必选参数。原则上 mode 为正整数。

stime

开始时间,开始时间按毫秒(千分之一秒 0.001s)的倍数记录,如:在视频播放1s后进入的弹幕, 对应的stime属性是1000。原则上stime的值应该是非负整数。请注意:有些特殊类型的弹幕将会 定义 0 作为stime起始值,但弹幕并不会渲染,而可能全程参与改变弹幕属性。

size

文字字号,字号为 CSS 的像素字号大小。这没什么好说的。各字号对应的值请参考 CommentSizes.md

color

弹幕颜色,弹幕颜色则是定义弹幕的默认颜色。值的类型是 数字 。格式为 WEB RGB 色的 HEX 表示的 六位十六进制数字0xFFFFFF 表示纯白色。请参考CSS中的颜色定义来进一步了解。

可选参数介绍

注意,不是所有的可选参数在所有的情况下都能起到其宣传的效果。 渲染器是否理睬某个可选参数 依赖于弹幕的类型

border

类型限制:无

弹幕的边框,类型为布尔值,默认为false,最好携带此参数,发送新弹幕的弹幕,默认此值为true。 为true时,生成的弹幕对象外围将被蓝色的边框框住。

dur

类型限制:mode > 6

弹幕生存时间,为微秒计时,决定多少秒后高级/定位弹幕被移除舞台。

shadow

类型限制:无

设定弹幕的钩边,如果是 false 则禁用弹幕钩边。

font

类型限制:无

设定弹幕渲染字体(如果为空,则使用默认字体)。

opacity

类型限制:无

不透明度。取值 [0,1], 0为完全透明,1为完全不透明。默认 1

dbid

类型限制:无

记录弹幕的数据库ID,这样,同一时间,靠前的弹幕会先显示,靠后的后显示,来实现遮罩。请注意: dbid必须在弹幕列表中唯一!

date

类型限制:无

发送日期,记录为时间戳。起不到渲染的作用,也对其没有影响。唯一的影响在于在排序时,两个相同 stime的弹幕,date更新的则会排在后面(渲染更靠上层)。

pool

类型限制:无

弹幕池编号,用于表示弹幕是哪个弹幕池的。不同的弹幕池的弹幕互不干扰布局(同时有可能碰撞)。主要 用于分离特殊弹幕(神弹幕)和普通用户弹幕(文字)。

hash

类型限制:无

发送弹幕者的唯一识别哈希。用于按作者过滤。存储为字符串, 而且建议最好只包含a-zA-Z0-9-_=/. 这些符号。

x,y

类型限制:mode > 6

弹幕坐标位置(起始),这个属性只在定位弹幕或更高级的弹幕中才被利用。动态弹幕将会以此值为初始移动 位置,而静态弹幕则会在标出的位置生成。有些高级弹幕虽然也有x,y属性。虽然一般情况下x,y属性都表示 位置坐标,但是有些高级弹幕中这个属性起到的效果未必是定位,具体需要参考该类型实现。

position

类型限制:mode > 6

弹幕坐标是相对还是绝对坐标。取值 absolute 时 x,y 表示对象锚点距离舞台原点的横纵像素绝对 坐标。当取值 relative 时 x,y 表示锚点距离原点的距离相对于舞台宽高的比例。例 x=0.5,y=0.5 时,锚点在舞台正中央。

rX, rY, rZ

类型限制:mode > 6

弹幕旋转,定义3D旋转效果。分别是沿X,Y,Z轴旋转。

align

类型限制:无

设定弹幕的对齐角(参考 CommentObject)。如果为空则默认取0

movable

类型限制:mode > 6

弹幕可移动,布尔。这个属性只在定位弹幕下有效,用于指定弹幕是否可移动。高级弹幕中的此参数不保证 作用。

motion

类型限制:mode > 6

弹幕运行轨迹,由一系列 motion 对象组成的数组。每一个motion对象参考下方定义

motion 对象

类型限制:mode > 6

弹幕运动关键帧。每个关键帧对象是一个Object,可以有一系列属性(如 x, y, alpha 等等)。每个 属性由一个 Object 表示,有如下四个必选参数:

  • from 起始值
  • to 结束值
  • dur 该属性总共关键帧动画长度
  • delay 开始前延迟

还有一个可选参数 easing,以补间函数形式提供。默认不提供时采用线性补间。

注意: delay 不算在 dur 内。如 dur=1000, delay=300,则参数在 0-300ms 不动,在 300-1300ms 时线性从 from 变化到 to。整个关键帧的长度由各个属性内,最大的 dur值决定。

alpha

类型限制:mode > 6 or mode == 4 or mode == 5

透明度渐变,取值为 2 元素数组 [alphaFrom, alphaTo]alphaFrom为初始透明度, alphaTo为终止透明度。注意:本设置在顶部和底部渐隐弹幕中也可用。