Skip to content

Data Format

json
{
  // The name of the DragonBones data.
  "name": "dragonBonesName",

  // The version of the DragonBones data.
  "version": "5.5",

  // The minimum compatible version of the DragonBones data.
  "compatibleVersion": "5.5",

  // The frame rate of animations. (Optional property, default: 24)
  "frameRate": 24,

  // The custom user data. (Optional property, default: null)
  "userData": null,

  // A list of the armatures. (Optional property, default: null)
  "armature": [{

    // The name of the armature.
    "name": "armatureName",

    // The frame rate of animations. (Optional property, default: null)
    // [null: Same as the frame rate of the DragonBones data, N: The frame rate.]
    "frameRate": 24,

    // Nonessential.
    "type": "Armature",

    // The custom user data. (Optional property, default: null)
    "userData": null,

    // A list of default actions when added to a parent armature. (Optional property, default: null)
    "defaultActions": [
      {
        "gotoAndPlay": "animationName"
      }
    ],

    // A list of the bones. (Optional property, default: null)
    "bone": [{

      // The name of the bone.
      "name": "boneName",

      // The name of the parent bone. (Optional property, default: null)
      "parent": "parentBoneName",

      // The custom user data. (Optional property, default: null)
      "userData": null,

      // The transform of the bone relative to the parent bone or the armature for the base pose.
      // (Optional property, default: null)
      "transform": {
        "x": 0.0, // The horizontal translate. (Optional property, default: 0.0)
        "y": 0.0, // The vertical translate. (Optional property, default: 0.0)
        "skX": 0.0, // The horizontal skew. (Optional property, default: 0.0)
        "skY": 0.0, // The vertical skew. (Optional property, default: 0.0)
        "scX": 1.0, // The horizontal scale. (Optional property, default: 1.0)
        "scY": 1.0  // The vertical scale. (Optional property, default: 1.0)
      }
    }],

    // A list of the slots.
    "slot": [{

      // The name of the slot.
      "name": "slotName",

      // The name of the parent bone.
      "parent": "parentBoneName",

      // The default display index of the slot. (Optional property, default: 0)
      "displayIndex": 0,

      // The blend mode of the slot. (Optional property, default: null)
      "blendMode": null,

      // The custom user data. (Optional property, default: null)
      "userData": null,

      // The color transform of the slot. (Optional property, default: null)
      "color": {
        "aM": 100, // The alpha multiplier. [0~100] (Optional property, default: 100)
        "rM": 100, // The red multiplier. [0~100] (Optional property, default: 100)
        "gM": 100, // The green multiplier. [0~100] (Optional property, default: 100)
        "bM": 100, // The blue multiplier. [0~100] (Optional property, default: 100)
        "aO": 0, // The alpha offset. [-255~255] (Optional property, default: 0)
        "rO": 0, // The red offset. [-255~255] (Optional property, default: 0)
        "gO": 0, // The green offset. [-255~255] (Optional property, default: 0)
        "bO": 0, // The blue offset. [-255~255] (Optional property, default: 0)
      }
    }],

    // A list of the skins.
    "skin": [{

      // The name of the skin.
      "name": "skinName",

      // A list of the slots.
      "slot": [{

        // The name of the slot.
        "name": "slotName",

        // A list of the displays.
        "display": [{

          // The name of the display.
          "name": "displayName",

          // The type of the display. (Optional property, default: "image")
          // [
          //     "image": A textured rectangle, 
          //     "armature": A nested child armature, 
          //     "mesh": A textured mesh, 
          //     "boundingBox": A bounding box
          // ]
          "type": "image",

          // The resource path of the display. (Optional property, default: null)
          "path": null,

          // The name of the shared mesh. (Optional property, default: null)
          "share": "meshName",

          // Whether to inherit the deform animations of the shared mesh. (Optional property, default: true)
          "inheritDeform": true,

          // The sub type of the display.
          // If the display is a bounding box: (Optional property, default: "rectangle")
          // ["rectangle": A rectangle, "ellipse": An ellipse, "polygon": A pllygon]
          "subType": "rectangle",

          // Nonessential.
          "color": 0x000000,

          // The transform of the display relative to the slot's bone. (Optional property, default: null)
          "transform": {
            "x": 0.0, // The horizontal translate. (Optional property, default: 0.0)
            "y": 0.0, // The vertical translate. (Optional property, default: 0.0)
            "skX": 0.0, // The horizontal skew. (Optional property, default: 0.0)
            "skY": 0.0, // The vertical skew. (Optional property, default: 0.0)
            "scX": 1.0, // The horizontal scale. (Optional property, default: 1.0)
            "scY": 1.0  // The vertical scale. (Optional property, default: 1.0)
          },

          // The relative pivot of the display. (Optional property, default: null)
          "pivot": {
            "x": 0.5, // The horizontal translate. [0.0~1.0] (Optional property, default: 0.5)
            "y": 0.5, // The vertical translate. [0.0~1.0] (Optional property, default: 0.5)
          },

          // The size of display. (Valid for bounding box only)
          "width": 100,
          "height": 100,

          "vertices": [-64.0, -64.0, 64.0, -64.0, 64.0, 64.0, -64.0, 64.0],

          "uvs": [0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0],

          "triangles": [0, 1, 2, 2, 3, 0],

          "weights": [1, 0, 1.0, 2, 0, 0.5, 1, 0.5],

          "slotPose": [1.0, 0.0, 0.0, 1.0, 0.0, 0.0],

          "bonePose": [0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0],

          // Override the default actions of the nested child armature. (Optional property, default: null)
          "actions": [
            {
              "gotoAndPlay": "animationName"
            }
          ]
        }]
      }]
    }],

    // A list of the IK constraints.
    "ik": [{

      // The name of the IK constraint.
      "name": "ikName",

      // The name of the bone.
      "bone": "boneName",

      // The name of the target bone.
      "target": "ikBoneName",

      // The IK constraint bend direction. (Optional property, default: true)
      // [true: Positive direction / Clockwise, false: Reverse Direction / Counterclockwise]
      "bendPositive": true,

      // The bone count of the bone chain in the constraint.
      // [0: Only the bone, N: The bone and the bone up N-level parent bones] (Optional property, default: 0)
      "chain": 0,

      // The weight of the IK constraint. [0.0~1.0] (Optional property, default: 1.0)
      "weight": 1.0
    }],

    // A list of the animations.
    "animation": [{

      // The name of animation.
      "name": "animationName",

      // The play times of the animation. [0: Loop play, N: Play N times] (Optional property, default: 1)
      "playTimes": 1,

      // The duration of the animation. (Optional property, default: 1)
      "duration": 1,

      // A list of the action keyframes. (Optional property, default: null)
      "frame": [{

        // The duration of the frame. (Optional property, default: 1)
        "duration": 1,

        // A list of actions. (Optional property, default: null)
        "actions": [{

          // The type of the action. (Optional property, default: 0)
          // [0: Play animation, 10: Frame event, 11: Frame sound event]
          "type": 0,

          // The name of the action. (The name of a animation or an event)
          "name": "actionName",

          // A bone name. (Optional property, default: null)
          "bone": "boneName",

          // A slot name. (Optional property, default: null)
          "slot": "slotName",

          // The list of custom data. (Optional property, default: null)
          "ints":[0 1 2],
          "floats":[0.01 1.01 2.01],
          "strings":["a", "b", "c"]
        }]
      }],

      // The z order timeline.
      "zOrder": {
        "frame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // A list of slot indeices and numeric offsets. [slotIndexA, offsetA, slotIndexB, offsetB, ...]
          // (Optional property, default: null)
          "zOrder": [0, 2, 4, 1, 6, -1]
        }]
      },

      // A list of the bone timelines.
      "bone": [{

        // The name of the bone.
        "name": "boneName",

        // The scale of the timeline. (Optional property, default: 0.0)
        "scale": 1.0,

        // The offset of the timeline. (Optional property, default: 0.0)
        "offset": 0.0,

        // A list of the translate keyframes. (Optional property, default: null)
        "translateFrame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // The tween easing of the frame. [0.0: Linear, null: No easing]. (Optional property, default: 0)
          "tweenEasing": 0.0,

          // The interpolation to use between this and the next keyframe. [x1, y1, x2, y2, ...]
          // (Optional property, default: null)
          "curve": [0.0, 0.0, 1.0, 1.0],

          // The horizontal translate of a bone in the keyframe. (Optional property, default: 0.0)
          "x": 0.0,

          // The vertical translate of a bone in the keyframe. (Optional property, default: 0.0)
          "y": 0.00,
        }],

        // A list of the rotate keyframes. (Optional property, default: null)
        "rotateFrame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // The tween easing of the frame. [0.0: Linear, null: No easing]. (Optional property, default: 0)
          "tweenEasing": 0.0,

          // The interpolation to use between this and the next keyframe. [x1, y1, x2, y2, ...]
          // (Optional property, default: null)
          "curve": [0.0, 0.0, 1.0, 1.0],

          // The rotation behavior during a tween. (Optional property, default: 0)
          // [
          //     0: Chooses a direction of rotation that requires the least amount of turning, 
          //     1: Rotates clockwise, 
          //     -1: Rotates counterclockwise, 
          //     N: Rotates clockwise at least N-rings, 
          //     -N: Rotates counterclockwise at least N-rings
          // ]
          "clockwise": 0,

          // The rotation of a bone in the keyframe. [-PI ~ PI] (Optional property, default: 0.0)
          "rotate": 0.0,

          // The skew of a bone in the keyframe. [-PI ~ PI] (Optional property, default: 0.0)
          "skew": 0.0
        }],

        // A list of the scale keyframes. (Optional property, default: null)
        "scaleFrame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // The tween easing of the frame. [0.0: Linear, null: No easing]. (Optional property, default: 0)
          "tweenEasing": 0.0,

          // The interpolation to use between this and the next keyframe. [x1, y1, x2, y2, ...]
          // (Optional property, default: null)
          "curve": [0.0, 0.0, 1.0, 1.0],

          // The horizontal scale of a bone in the keyframe. (Optional property, default: 1.0)
          "x": 1.0,

          // The vertical scale of a bone in the keyframe. (Optional property, default: 1.0)
          "y": 1.0
        }]
      }],

      // A list of the slot timelines.
      "slot": [{

        // The name of the slot.
        "name": "slotName",

        // A list of the display keyframes. (Optional property, default: null)
        "displayFrame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // The display index of a slot in the keyframe. (Optional property, default: 1)
          "value": 0,

          // The actions of a slot in the keyframe. (Optional property, default: null)
          "actions": [
            {
              "gotoAndPlay": "animationName"
            }
          ]
        }],

        // A list of the color keyframes. (Optional property, default: null)
        "colorFrame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // The tween easing of the frame. [0.0: Linear, null: No easing]. (Optional property, default: 0)
          "tweenEasing": 0.0,

          // The interpolation to use between this and the next keyframe. [x1, y1, x2, y2, ...]
          // (Optional property, default: null)
          "curve": [0.0, 0.0, 1.0, 1.0],

          // The color transform of a slot in the frame. (Optional property, default: null)
          "color": {
            "aM": 100, // The alpha multiplier. [0~100] (Optional property, default: 100)
            "rM": 100, // The red multiplier. [0~100] (Optional property, default: 100)
            "gM": 100, // The green multiplier. [0~100] (Optional property, default: 100)
            "bM": 100, // The blue multiplier. [0~100] (Optional property, default: 100)
            "aO": 0, // The alpha offset. [-255~255] (Optional property, default: 0)
            "rO": 0, // The red offset. [-255~255] (Optional property, default: 0)
            "gO": 0, // The green offset. [-255~255] (Optional property, default: 0)
            "bO": 0, // The blue offset. [-255~255] (Optional property, default: 0)
          }
        }]
      }],

      // A list of the FFD timelines. (Optional property, default: null)
      "ffd": [{

        // The name of the mesh.
        "name": "meshName",

        // The name of skin.
        "skin": "skinName",

        // The name of slot.
        "slot": "slotName",

        "frame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // The tween easing of the frame. [0.0: Linear, null: No easing]. (Optional property, default: 0)
          "tweenEasing": 0.0,

          // The interpolation to use between this and the next keyframe. [x1, y1, x2, y2, ...]
          // (Optional property, default: null)
          "curve": [0.0, 0.0, 1.0, 1.0],

          // The number of vertices to skip before applying vertices. (Optional property, default: 0)
          "offset": 0,

          // A list of number pairs that are the amounts to add to the setup vertex positions for the keyframe.
          // (Optional property, default: null)
          // [x0, y0, x1, y1, ...]
          "vertices": [0.1, 0.1]
        }]
      }],

      // A list of the IK constraint timelines. (Optional property, default: null)
      "ik": [{

        // The name of the IK constraint.
        "name": "meshName",

        "frame": [{

          // The duration of the frame. (Optional property, default: 1)
          "duration": 1,

          // The tween easing of the frame. [0.0: Linear, null: No easing]. (Optional property, default: 0)
          "tweenEasing": 0.0,

          // The interpolation to use between this and the next keyframe. [x1, y1, x2, y2, ...]
          // (Optional property, default: null)
          "curve": [0.0, 0.0, 1.0, 1.0],

          // The positive direction of the IK constraint in the frame. (Optional property, default: true)
          "bendPositive": true,

          // The weight of the IK constraint in the frame. (Optional property, default: 1.0)
          "weight": 1.0
        }]
      }]
    }]
  }]
}

Released under the MIT License.