ACFUN目前的播放器的弹幕文件是由JSON为载体存储,为了本地编辑JSON便于查询记下此篇.查看json文件传送门(弹幕池通过什么开发人员工具就可以看到):http://comment.acfun.tv/弹幕池.jsonhttp://comment.acfun.tv/弹幕池_lock.json
第一层
举个栗子:{"c": "......", "m": "......"}
其中
c是参数内容,
m是弹幕内容
第二层 "c"
举个栗子:{"c": "0,3368652,1,25,189525,1327877606", "m": "弹幕内容"}
其中c并没有明确变量对应,上面的数据分别对应着
{"c": "播放时间,颜色,模式,字号,uid,发送时间", "m": "弹幕内容"}
播放时间:按秒计,没有试验过,目测0.1s精确度可行.颜色:十进制颜色(
颜色辅助工具下载)模式:
- 1:滚动弹幕
- 4:底端弹幕
- 5:顶端弹幕
- 7:高级弹幕
第二层 "m"
非高级弹幕
那么里面直接就是弹幕文本,举个栗子:{"c": "0,3368652,1,25,189525,1327877606", "m": "显示的弹幕内容在这里"}
高级弹幕
举个栗子:{"c": "0,3368652,7,25,189525,1327877606", "m": "{"f":8,"l":10,"r":5,"z":[{"f":16,"t":0.18,"l":19,"e":15,"x":12,"d":14,"y":13,"c":13421772,"g":17,"v":3}],"n":"4","t":0,"c":1,"e":7,"b":true,"p":{"y":2,"x":1},"k":6,"a":0.9}"}
好像很难看懂的样子?那么我们把参数换成文字
{"c": ".....", "m": "{"f":初始y轴拉伸,"l":初始存活时间,"r":初始x轴旋转,"z":[{"f":拉伸x,"t":透明度变换,"l":动作时间,"e":旋转y,"x":移动到x轴坐标,"d":旋转x,"y":移动到y轴坐标,"c":变换颜色,"g":拉伸y,"v":移动策略}],"n":"弹幕显示内容","t":我不知道,"c":锚点位置,"e":初始x轴拉伸,"b":是否描边,"p":{"y":初始y轴位置,"x":初始x轴位置},"k":初始y轴旋转,"a":初始透明度}"}
这个便是高级弹幕的全部参数了 以下我们分层解释首先我们解释最外层参数
{"c": ".....", "m": "{"f":初始y轴拉伸,"l":初始存活时间,"r":初始x轴旋转,"z":[..动作内容..],"n":"弹幕显示内容","t":我不知道,"c":锚点位置,"e":初始x轴拉伸,"b":是否描边,"p":{..初始位置..},"k":初始y轴旋转,"a":初始透明度}"}
p:位置参数
"p":{"y":初始y轴位置,"x":初始x轴位置}
其中参数按百分比计算 1000=100%举个栗子
"p":{"y":500,"x":500}
那么初始锚点在最中间
l:初始存活时间
顾名思义,存活时间. 存活时间结束后才会进入动作时间注意r:初始x轴旋转 k:初始y轴旋转
0-360你懂的e:初始x轴拉伸 f:初始y轴拉伸
按填写倍数拉伸a:初始透明度
0.0-1.0你也懂的c:锚点位置
- 0:左上锚点
- 1:中上锚点
- 2:右上锚点
- 3:左中锚点
- 4:中中锚点
- 5:右中锚点
- 6:左下锚点
- 7:中下锚点
- 8:右下锚点
b:是否描边
false不描边 true描边n:弹幕显示内容
还用说?z:动作数组
这个比较难于是举个栗子直观上是按照数组顺序执行补帧动画."z":[{动作1},{动作2},{动作3}]
其中的参数如下,上面解释过的就不多解释了
"z":[{"f":拉伸x,"t":透明度变换,"l":动作时间,"e":旋转y,"x":移动到x轴坐标,"d":旋转x,"y":移动到y轴坐标,"c":变换颜色,"g":拉伸y,"v":移动策略}]
其中动作时间("l":动作时间)就是补帧动画的时间移动策略("v":移动策略):
- 0:啥也没
- 1:null
- 2:Back.easeOut
- 3:Back.easeIn
- 4:Back.easeInOut
- 5:Bounce.easeOut
- 6:Bounce.easeIn
- 7:Bounce.easeInOut