为了统一各个解析器的输出,弹幕在经过解析器后将会被解析为一个个独立的对象。 这些对象将会有自己的一系列属性,并且用于构造 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,
...
}
文字参数,文字参数由弹幕解析器生成,其可能来源于弹幕文件本身,或者弹幕文件高级弹幕的配置中截取。
文字参数将直接表示生成弹幕中所含的文字,如果需要有特殊转义字符(如 /n
= 换行),
它们必须被事先处理掉。
注意:图片弹幕中的 text 字段表示图片的URL。
弹幕类型参数,类型参数请参见 CommentTypes 介绍的相关类型对应表。
不同的类型参数可能会决定可选参数读取哪些。在很多时候,一些特殊的类型弹幕的
一些可选参数项将变为必选参数。原则上 mode
为正整数。
开始时间,开始时间按毫秒(千分之一秒 0.001s)的倍数记录,如:在视频播放1s后进入的弹幕,
对应的stime
属性是1000
。原则上stime
的值应该是非负整数。请注意:有些特殊类型的弹幕将会
定义 0
作为stime
起始值,但弹幕并不会渲染,而可能全程参与改变弹幕属性。
文字字号,字号为 CSS 的像素字号大小。这没什么好说的。各字号对应的值请参考 CommentSizes.md
弹幕颜色,弹幕颜色则是定义弹幕的默认颜色。值的类型是 数字 。格式为 WEB RGB 色的 HEX
表示的 六位十六进制数字
如 0xFFFFFF
表示纯白色。请参考CSS中的颜色定义来进一步了解。
注意,不是所有的可选参数在所有的情况下都能起到其宣传的效果。 渲染器是否理睬某个可选参数 依赖于弹幕的类型。
类型限制:无
弹幕的边框,类型为布尔值,默认为false
,最好携带此参数,发送新弹幕的弹幕,默认此值为true
。
为true
时,生成的弹幕对象外围将被蓝色的边框框住。
类型限制:mode > 6
弹幕生存时间,为微秒计时,决定多少秒后高级/定位弹幕被移除舞台。
类型限制:无
设定弹幕的钩边,如果是 false
则禁用弹幕钩边。
类型限制:无
设定弹幕渲染字体(如果为空,则使用默认字体)。
类型限制:无
不透明度。取值 [0,1], 0
为完全透明,1
为完全不透明。默认 1
。
类型限制:无
记录弹幕的数据库ID,这样,同一时间,靠前的弹幕会先显示,靠后的后显示,来实现遮罩。请注意:
dbid
必须在弹幕列表中唯一!
类型限制:无
发送日期,记录为时间戳。起不到渲染的作用,也对其没有影响。唯一的影响在于在排序时,两个相同
stime
的弹幕,date
更新的则会排在后面(渲染更靠上层)。
类型限制:无
弹幕池编号,用于表示弹幕是哪个弹幕池的。不同的弹幕池的弹幕互不干扰布局(同时有可能碰撞)。主要 用于分离特殊弹幕(神弹幕)和普通用户弹幕(文字)。
类型限制:无
发送弹幕者的唯一识别哈希。用于按作者过滤。存储为字符串, 而且建议最好只包含a-zA-Z0-9-_=/.
这些符号。
类型限制:mode > 6
弹幕坐标位置(起始),这个属性只在定位弹幕或更高级的弹幕中才被利用。动态弹幕将会以此值为初始移动 位置,而静态弹幕则会在标出的位置生成。有些高级弹幕虽然也有x,y属性。虽然一般情况下x,y属性都表示 位置坐标,但是有些高级弹幕中这个属性起到的效果未必是定位,具体需要参考该类型实现。
类型限制:mode > 6
弹幕坐标是相对还是绝对坐标。取值 absolute
时 x,y 表示对象锚点距离舞台原点的横纵像素绝对
坐标。当取值 relative
时 x,y 表示锚点距离原点的距离相对于舞台宽高的比例。例
x=0.5,y=0.5
时,锚点在舞台正中央。
类型限制:mode > 6
弹幕旋转,定义3D旋转效果。分别是沿X,Y,Z轴旋转。
类型限制:无
设定弹幕的对齐角(参考 CommentObject)。如果为空则默认取0
。
类型限制:mode > 6
弹幕可移动,布尔。这个属性只在定位弹幕下有效,用于指定弹幕是否可移动。高级弹幕中的此参数不保证 作用。
类型限制:mode > 6
弹幕运行轨迹,由一系列 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
值决定。
类型限制:mode > 6 or mode == 4 or mode == 5
透明度渐变,取值为 2 元素数组 [alphaFrom, alphaTo]
。alphaFrom
为初始透明度,
alphaTo
为终止透明度。注意:本设置在顶部和底部渐隐弹幕中也可用。