```javascript { // DragonBones 数据名称 "name": "dragonBonesName", // 数据版本 "version": "5.0", // 兼容版本 "compatibleVersion": "4.5", // 动画帧频 "frameRate": 24, // 自定义数据 (可选属性 默认: 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": 网格, "boundingBox": 包围盒, ... 其他扩展的类型] "type": "image", // 子骨架指向的骨架名、网格包含的贴图名 (可选属性 默认: null, 仅对子骨架、网格有效) "path": "path", // 共享网格的索引 (可选属性 默认: null, 仅对网格有效) "share": "meshName", // 是否继承动画 (可选属性 默认: true, 仅对共享网格有效) "inheritFFD": true, // 包围盒类型 (可选属性 默认: "rectangle", 仅对包围盒有效) // ["rectangle": 矩形, "ellipse": 椭圆, "polygon": 自定义多边形] "subType": "rectangle", // 显示对象颜色 (可选属性 默认: 0, 仅对包围盒有效) "color": 0, // 显示对象相对于骨骼的位移/ 斜切/ 缩放 (可选属性 默认: 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) }, // 矩形或椭圆的宽高 (可选属性 默认: 0, 仅对包围盒有效), "width": 100, "height": 100, // 顶点相对显示对象轴点的坐标列表 (可选属性 默认: null, 仅对网格或自定义多边形包围盒有效) // [x0, y0, x1, y1, ...] "vertices": [-64.00, -64.00, 64.00, -64.00, 64.00, 64.00, -64.00, 64.00], // 顶点的 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, 仅对网格有效) // [骨骼数量, 骨骼索引, 权重, ..., ...] "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) "sound": "soundName", // 帧事件列表 (可选属性 默认: null) "events": [{ // 事件名称 "name": "eventName", // 骨骼名称 (可选属性 默认: null) "bone": "boneName", // 插槽名称 (可选属性 默认: null) "slot": "slotName", // 事件参数列表 (可选属性 默认: null) "ints":[0, 1, 2], "floats":[0.01, 1.01, 2.01], "strings":["a", "b", "c"] }], // 帧行为列表 (可选属性 默认: 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: 由 tweenEasing 或 curve 描述缓动类型,1~N: 其他扩展缓动类型枚举(具体如何枚举未来再定义)] (可选属性 默认: 0) "tweenType": 0, // 缓动值 [0.00: 线性, null: 无缓动] (可选属性 默认: null) "tweenEasing": 0.00, // 贝塞尔曲线缓动参数列表 [x1, y1, x2, y2, ...] (可选属性 默认: null) "curve": [0.00, 0.00, 1.00, 1.00], // 骨骼的位移/ 斜切/ 缩放 (可选属性 默认: 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: 由 tweenEasing 描述缓动类型,N: 其他扩展缓动属性] (可选属性 默认: 0) "tweenType": 0, // 补间缓动 [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": [{ // 时间轴名称 (与网格名称对应) "name": "timelineName", // 皮肤名称 "skin": "skinName", // 插槽名称 "slot": "slotName", // 此时间轴包含的关键帧列表 (可选属性 默认: null) "frame": [{ // 帧长度 (可选属性 默认: 1) "duration": 1, // 缓动类型 [0: 由 tweenEasing 描述缓动类型,N: 其他扩展缓动属性] (可选属性 默认: 0) "tweenType": 0, // 补间缓动 [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] }] }] }] }] } ``` ------------------------------ # 5.0 相对 4.5 格式变化 ## Root * 增加 "compatibleVersion" 属性。 * 删除 "isGlobal" 属性。 * 不再支持绝对坐标,只支持相对坐标,相当于isGlobal设置为0。 * isGlobal为1的情况(绝对坐标)只存在于使用2.3及以前的数据格式。 * 从3.0开始支持相对坐标,于是引入isGlobal属性用于向下兼容,同时支持相对坐标和绝对坐标。 * 从5.0开始不再支持绝对坐标。 ## Display * 增加 "path" 属性,与 name 区分,用于标识图片指向的贴图路径、Mesh包含的贴图路径或子骨架指向的骨架名。 * name属性的意义变为display的唯一标示符,不再代表路径。 ## 支持包围盒 * "display"的"type" 属性的值增加 "boundingBox" ,用于标记包围盒。 * 包围盒类型的 display 会包含如下属性 * "subType" : 标记包围盒的类型,可能的值为"rectangle": 矩形, "ellipse": 椭圆, "polygon": 自定义多边形 * "width", "height": 宽高(仅对矩形或椭圆类型的包围盒生效) * "vertices": 顶点列表(仅对自定义多边形类型的包围盒生效) ## 支持共享网格(Linked Mesh) * 网格类型的Display增加 "share" 属性,可以通过设置share属性将之变为共享网格。 * 共享网格可以通过 "inheritFFD" 属性控制共享网格是否继承主网格的FFD动画。 ## 支持动画中改变插槽的显示顺序(ZOrder) * "animation" 中增加 "zOrder" 属性,代表深度排序时间轴 * "zOrder" 包含frames属性,代表时间轴上的关键帧列表。包含的每个关键帧对象会包含如下属性: * "duration": 关键帧持续的长度。 * "zOrder": 该关键帧上zOrder需要变化的插槽以及变化的幅度组成的数组。 ## 事件统一由主时间轴抛出,支持多事件和事件参数列表 * 去掉骨骼时间轴包含的关键帧的event属性。(版本升级的时候会把数据移动到主时间轴相同位置的关键帧上) * "animation" 的 "frame"(主时间轴包含的关键帧列表)包含的关键帧数据的 event 属性改为 "events", 表示需要在该帧上抛出的事件列表。 * 事件对象包含如下属性 * "name": 事件名 * "bone": 抛出事件的骨骼,默认为null(原骨骼时间轴包含的事件,将把骨骼名记录在这里) * "slot": 抛出事件的插槽,默认为null(该属性和上面的bone属性不可能同时存在,都不存在代表事件由骨架抛出) * "ints": 整形参数列表 * "floats": 浮点形参数列表 * "strings": 字符串形参数列表 ## 增加更多缓动类型的定义 * "frame"包含的关键帧数据增加 "tweenType" 属性。 * "tweenType" 默认为0 代表由 tweenEasing 或 curve 描述缓动类型(和4.5一致) * "tweenType" 不为0 代表使用其他扩展缓动类型的枚举,具体每个枚举代表的意义未来再定义。