弹幕抽象对象 ICommentData

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

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

概览

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

基础: text 文字 mode 类型 stime 开始时间 size 字号 * color 颜色

附加显示: border 是否有边框 dur 生命周期 shadow 文字钩边 font 文字字体

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

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

移动相关: movable 是否可动 motion 动作序列 moveDuration 移动时长 moveDelay 移动延时 toX 横坐标末尾 toY 纵坐标末尾 alphaFrom 初始透明度 alphaTo 结束透明度

基本格式

基本原始格式即把上述参数通过一个 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起始值,但弹幕并不会渲染,而可能全程参与改变弹幕属性。

color

弹幕颜色,弹幕颜色则是定义弹幕的默认颜色。值的类型是字符串。格式为WEB RGB色的HEX表示"#" + 六位十六进制数字#FFFFFF表示纯白色。请参考CSS中的颜色定义 来进一步了解。注意:过滤器进行颜色过滤时,也会把此参数对代为String而非特殊的Color。

size

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

可选参数介绍

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

date

类型限制:无

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

dbid

类型限制:无

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

hash

类型限制:无

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

border

类型限制:无

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

duration

类型限制:mode  > 6

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

x,y

类型限制:mode > 6

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

movable

类型限制:mode > 6

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

toX,toY

类型限制:mode > 6, movable == true

弹幕移动终点坐标,这个属性只对高级的移动定位弹幕生效。有些高级的其他类型弹幕也会使用。

moveDuration, moveDelay

类型限制:mode > 6, movable == true

移动时间轴定义,moveDuration定义了移动的时间轴长度,moveDelay定义了开始前的延时。在移动时,会首先等待,到moveDelay结束, 然后开始移动moveDuration时长。若moveDuration时长移动过后,弹幕生命周期还未到,则剩下时间在终点位置等待。若moveDuration 未到,但是弹幕已经到达生命周期,则会被移除舞台(不会完成移动,即无法到达终点)。

rY,rZ

类型限制:mode > 6

弹幕旋转,定义3D旋转效果。

alphaFrom, alphaTo

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

透明度渐变,alphaFrom为初始透明度,alphaTo为终止透明度。注意本设置在顶部和底部渐隐弹幕中也可用。

shadow

类型限制:无

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

font

类型限制:无

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

align

类型限制:无

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