dragonbones-runtime
Version:
the tools to build dragonbones file for diffrent framework
422 lines (309 loc) • 17.1 kB
Markdown
```javascript
{
// DragonBones 数据名称
"name": "dragonBonesName",
// 数据版本
"version": "4.5",
// 动画帧频
"frameRate": 24,
// 是否使用绝对数据 [0: 使用相对数据, 1: 使用绝对数据] (可选属性 默认: 1)
"isGlobal": 1,
// 自定义数据 [任何类型] (可选属性 默认: null)
"userData": null,
// 骨架列表
"armature": [{
// 骨架名称 (一个 DragonBones 数据可包含多个骨架)
"name": "armatureName",
// 动画帧频 (可选属性 默认: 使用全局帧频)
"frameRate": 24,
// 动画类型 (可选属性 默认: "Armature")
// ["Armature": 骨骼动画, "MovieClip": 基本动画, "Stage": 场景动画]
"type": "Armature",
// 自定义数据 [任何类型] (可选属性 默认: null)
"userData": null,
// 添加到舞台后的默认行为列表 (可选属性 默认: null)
"defaultActions": [
// 此骨架播放指定动画
["gotoAndPlay", "animationName"],
// 此骨架播放指定动画并停止
["gotoAndStop", "animationName"],
],
// 此骨架包含的骨骼列表
"bone": [{
// 骨骼名称
"name": "boneName",
// 父级骨骼的名称
"parent": "parentBoneName",
// 自定义数据 [任何类型] (可选属性 默认: null)
"userData": null,
// 骨骼注册到骨架的位移/ 斜切/ 缩放 (可选属性 默认: null)
"transform": {
"x": 0.00, // 水平位移 (可选属性 默认: 0.00)
"y": 0.00, // 垂直位移 (可选属性 默认: 0.00)
"skX": 0.0000, // 水平斜切 (可选属性 默认: 0.0000)
"skY": 0.0000, // 垂直斜切 (可选属性 默认: 0.0000)
"scX": 1.0000, // 垂直缩放 (可选属性 默认: 1.0000)
"scY": 1.0000, // 垂直缩放 (可选属性 默认: 1.0000)
}
}],
// 此骨架包含的插槽列表
"slot": [{
// 插槽名称
"name": "slotName",
// 插槽所属的骨骼名称
"parent": "parentBoneName",
// 默认显示对象的索引 (可选属性 默认: 0)
"displayIndex": 0,
// 混合模式 (可选属性 默认: null)
"blendMode": null,
// 自定义数据 [任何类型] (可选属性 默认: null)
"userData": null,
// 显示对象的颜色叠加 (可选属性 默认: null)
"color": {
"aM": 100, // 透明叠加 [0~100] (可选属性 默认: 100)
"rM": 100, // 红色叠加 [0~100] (可选属性 默认: 100)
"gM": 100, // 绿色叠加 [0~100] (可选属性 默认: 100)
"bM": 100, // 蓝色叠加 [0~100] (可选属性 默认: 100)
"aO": 0.00, // 透明偏移 [-255~255] (可选属性 默认: 0)
"rO": 0.00, // 红色偏移 [-255~255] (可选属性 默认: 0)
"gO": 0.00, // 绿色偏移 [-255~255] (可选属性 默认: 0)
"bO": 0.00, // 蓝色偏移 [-255~255] (可选属性 默认: 0)
},
// 添加到舞台后的行为列表 (可选属性 默认: null)
"actions": [
// 子骨架播放指定动画 (仅对显示对象为骨架时有效)
["gotoAndPlay", "animationName"],
// 子骨架播放指定动画并停止 (仅对显示对象为骨架时有效)
["gotoAndStop", "animationName"],
]
}],
// 此骨架包含的皮肤列表
"skin": [{
// 皮肤名称
"name": "skinName",
// 此皮肤包含的插槽列表
"slot": [{
// 插槽名称
"name": "slotName",
// 此插槽包含的显示对象列表
"display": [{
// 显示对象名称
"name": "displayName",
// 显示对象类型 (可选属性 默认: "image")
// ["image": 贴图, "armature": 骨架, "mesh": 网格, ... 其他扩展的类型]
"type": "image",
// 显示对象相对于骨骼的位移/ 斜切/ 缩放 (可选属性 默认: null)
"transform": {
"x": 0.00, // 水平位移 (可选属性 默认: 0.00)
"y": 0.00, // y 垂直位移 (可选属性 默认: 0.00)
"skX": 0.0000, // 水平斜切 (可选属性 默认: 0.0000)
"skY": 0.0000, // 垂直斜切 (可选属性 默认: 0.0000)
"scX": 1.0000, // 垂直缩放 (可选属性 默认: 1.0000)
"scY": 1.0000, // 垂直缩放 (可选属性 默认: 1.0000)
},
// 显示对象的轴点 (可选属性 默认: null, 仅对贴图或网格有效)
"pivot": {
"x": 0.50, // 水平轴点 [0.00~1.00] (可选属性 默认: 0.50)
"y": 0.50, // 垂直轴点 [0.00~1.00] (可选属性 默认: 0.50)
},
// 顶点的 UV 坐标列表 (可选属性 默认: null, 仅对网格有效)
// [u0, v0, u1, v1, ...]
"uvs": [0.0000, 0.0000, 1.0000, 0.0000, 1.0000, 1.0000, 0.0000, 1.0000],
// 三角形顶点索引列表 (可选属性 默认: null, 仅对网格有效)
"triangles": [0, 1, 2, 2, 3, 0],
// 顶点相对显示对象轴点的坐标列表 (可选属性 默认: null, 仅对网格有效)
// [x0, y0, x1, y1, ...]
"vertices": [-64.00, -64.00, 64.00, -64.00, 64.00, 64.00, -64.00, 64.00],
// 顶点权重列表 (可选属性 默认: null, 仅对网格有效)
// [骨骼数量, 骨骼索引, 权重, ..., ...]
"weights": [1, 0, 1.00, 2, 0, 0.50, 1, 0.50],
// 蒙皮插槽注册的矩阵变换 (可选属性 默认: null, 仅对网格有效)
// [a, b, c, d, tx, ty]
"slotPose": [1.0000, 0.0000, 0.0000, 1.0000, 0.00, 0.00],
// 蒙皮骨骼注册的矩阵变换 (可选属性 默认: null, 仅对网格有效)
// [骨骼索引, a, b, c, d, tx, ty, ...]
"bonePose": [0, 1.0000, 0.0000, 0.0000, 1.0000, 0.00, 0.00]
}]
}]
}],
// 此骨架包含的 ik 约束列表
"ik": [{
// ik 约束名称
"name": "ikName",
// 绑定骨骼的名称
"bone": "boneName",
// 目标骨骼的名称
"target": "ikBoneName",
// 弯曲方向 (可选属性 默认: true)
// [true: 正方向/ 顺时针, false: 反方向/ 逆时针]
"bendPositive": true,
// 骨骼链的长度 (可选属性 默认: 0)
// [0: 只约束 bone, n: 约束 bone 及 bone 向上 n 级的父骨骼]
"chain": 0,
// 权重 [0.00: 不约束 ~ 1.00: 完全约束] (可选属性 默认: 1.00)
"weight": 1.00
}],
// 此骨架包含的动画列表
"animation": [{
// 动画名称
"name": "animationName",
// 循环播放次数 [0: 循环播放无限次, n: 循环播放 n 次] (可选属性 默认: 1)
"playTimes": 1,
// 动画帧长度 (可选属性 默认: 1)
"duration": 1,
// 此动画包含的关键帧列表 (可选属性 默认: null)
"frame": [{
// 帧长度 (可选属性 默认: 1)
"duration": 1,
// 帧事件 (可选属性 默认: null)
"event": "eventName",
// 帧声音 (可选属性 默认: null)
"sound": "soundName",
// 帧行为列表 (可选属性 默认: null)
"actions": [
// 此骨架播放指定动画
["gotoAndPlay", "animationName"],
// 此骨架播放指定动画并停止
["gotoAndStop", "animationName"],
]
}],
// 深度排序移动时间轴
"zOrder": {
"frame": [{
// 帧长度 (可选属性 默认: 1)
"duration": 1,
// 插槽偏移 [slotIndexA, offsetA, slotIndexB, offsetB, ...] (可选属性 默认: null)
"zOrder": [0, 2, 4, 1, 6, -1]
}]
},
// 此动画包含的骨骼时间轴列表 (可选属性 默认: null)
"bone": [{
// 时间轴名称 (与骨骼名称对应)
"name": "boneName",
// 时间轴缩放 (可选属性 默认: 1.00)
"scale": 1.00,
// 时间轴偏移 (可选属性 默认: 0.00)
"offset": 0.00,
// 此时间轴包含的关键帧列表 (可选属性 默认: null)
"frame": [{
// 帧长度 (可选属性 默认: 1)
"duration": 1,
// 补间缓动 [0.00: 线性, null: 无缓动] (可选属性 默认: null)
"tweenEasing": 0.00,
// 补间缓动贝塞尔曲线 [x1, y1, x2, y2, ...] (可选属性 默认: null)
"curve": [0.00, 0.00, 1.00, 1.00],
// 帧事件 (可选属性 默认: null)
"event": "eventName",
// 帧声音 (可选属性 默认: null)
"sound": "soundName",
// 骨骼的位移/ 斜切/ 缩放 (可选属性 默认: null)
"transform": {
"x": 0.00, // 水平位移 (可选属性 默认: 0.00)
"y": 0.00, // 垂直位移 (可选属性 默认: 0.00)
"skX": 0.0000, // 水平斜切 (可选属性 默认: 0.0000)
"skY": 0.0000, // 垂直斜切 (可选属性 默认: 0.0000)
"scX": 1.0000, // 垂直缩放 (可选属性 默认: 1.0000)
"scY": 1.0000 // 垂直缩放 (可选属性 默认: 1.0000)
},
}]
}],
// 此动画包含的插槽时间轴列表
"slot": [{
// 时间轴名称 (与插槽名称对应)
"name": "slotName",
// 此时间轴包含的关键帧列表 (可选属性 默认: null)
"frame": [{
// 帧长度 (可选属性 默认: 1)
"duration": 1,
// 补间缓动 [0.00: 线性, null: 无缓动] (可选属性 默认: null)
"tweenEasing": 0.00,
// 补间缓动贝塞尔曲线 [x1, y1, x2, y2, ...] (可选属性 默认: null)
"curve": [0.00, 0.00, 1.00, 1.00],
// 此帧的显示对象索引 (皮肤中对应的插槽显示对象列表) (可选属性 默认: 0)
"displayIndex": 0,
// 显示对象的颜色叠加 (可选属性 默认: null)
"color": {
"aM": 100, // 透明叠加 [0~100] (可选属性 默认: 100)
"rM": 100, // 红色叠加 [0~100] (可选属性 默认: 100)
"gM": 100, // 绿色叠加 [0~100] (可选属性 默认: 100)
"bM": 100, // 蓝色叠加 [0~100] (可选属性 默认: 100)
"aO": 0.00, // 透明偏移 [-255~255] (可选属性 默认: 0)
"rO": 0.00, // 红色偏移 [-255~255] (可选属性 默认: 0)
"gO": 0.00, // 绿色偏移 [-255~255] (可选属性 默认: 0)
"bO": 0.00, // 蓝色偏移 [-255~255] (可选属性 默认: 0)
},
// 播放到当前帧时,执行的动作行为列表 (可选属性 默认: null)
"actions": [
// 子骨架播放指定动画 (仅对显示对象为骨架时有效)
["gotoAndPlay", "animationName"],
// 子骨架播放指定动画并停止 (仅对显示对象为骨架时有效)
["gotoAndStop", "animationName"],
]
}],
}],
// 此动画包含的自由变形时间轴列表 (可选属性 默认: null)
"ffd": [{
// 时间轴名称 (与皮肤名称对应)
"skin": "skinName",
// 时间轴名称 (与插槽名称对应)
"name": "slotName",
// 时间轴名称 (显示对象索引)
"displayIndex": 0,
// 此时间轴包含的关键帧列表 (可选属性 默认: null)
"frame": [{
// 帧长度 (可选属性 默认: 1)
"duration": 1,
// 补间缓动 [0.00: 线性, null: 无缓动] (可选属性 默认: null)
"tweenEasing": 0.00,
// 补间缓动贝塞尔曲线 [x1, y1, x2, y2, ...] (可选属性 默认: null)
"curve": [0.00, 0.00, 1.00, 1.00],
// 顶点坐标列表索引偏移 (可选属性 默认: 0)
"offset": 0,
// 顶点坐标相对位移列表 [x0, y0, x1, y1, ...] (可选属性 默认: null)
"vertices": [0.01, 0.01]
}]
}]
}]
}]
}
```
------------------------------
* Armature
1. 增加 "frameRate" 属性: 可为每个骨架设置独立帧率
2. 增加 "type" 属性: 骨骼动画/基本动画/场景动画
3. 增加 "defaultActions" 列表: 可为骨架分配默认行为 (删除 "gotoAndPlay" 属性, 其功能与 "actions" 合并)
4. 增加 "ik" 列表
* Slot
1. 增加 "actions" 列表: 插槽可为子骨架分配默认行为 (删除 "gotoAndPlay" 属性, 其功能与 "actions" 合并)
* Display
1. "type" 属性增加 "mesh" 类型以及与其匹配的其他属性
* Animation
1. 增加 "ffd" 时间轴
* Frame
1. 增加 "actions" 列表: 控制子骨架行为 (删除 "action" "gotoAndPlay" 属性, 其功能与 "actions" 合并)
* actions
1. 暂时只支持 "gotoAndPlay" 行为, 后续会扩展更多对动画的控制行为和交互行为
------------------------------
* Armature 中包含Slot列表
* Skin 中增加默认Skin, 默认skin有如下特性:
1. 在skin列表中排第一
2. 名字为空字符串“”
3. 包含的slot会同时存在于其他的skin,相当于保存所有其他skin中共有的slot(相当于其他skin的基类)
* Skin中包含的Slot的Display的transform属性中不在有pX,pY属性
1. Display不再有初始轴点属性,所有display的轴点均为中心点。
2. 因为display在运动时的轴点是骨骼的原点,所以这里的轴点信息可以在初始化时换算成display的位置信息,从而可以完美还原动画。
* Animation中有下面的改动
1. 去掉"tweenEasing": 动画不会覆盖关键帧的缓动值
2. 去掉"autoTween": 动画不会覆盖关键帧的补件值
3. "loop"改名为"playtime"
4. "colorTransform"改名为"color"
* 区分Bone时间轴和Slot时间轴
1. Bone时间轴包含平移旋转缩放,自定义事件和声音事件
2. Slot时间轴包含颜色变换,dispalyIndex变换和zorder变换
* Armature, Bone 和Slot中均添加了userData字段用于记录用户自定义信息,同时方便第三方扩展
* Frame中有如下改动
1. 中去掉了hide 属性,动画中如果想隐藏某个插槽,改为设置dispalyIndex为-1. visible属性完全留给开发者使用,用于动态设置slot是否隐藏。
2. 增加curve属性,使用贝塞尔曲线描述动画补间的缓动效果