跳转到内容

工程 JSON 结构

「另存为…」得到的是一个目录,不是单文件:

demo.kinora/
project.json # 镜头、步骤、画幅、音频、素材元数据
canvas.json # tldraw 画布快照(所有对象)
assets/ # 外部化媒体(图片/视频/字体)
autosave.kinora.json # 自动保存副本(有未保存改动时才存在)

整个目录可搬走、可压缩、可在别处打开——媒体用相对路径引用。

  • kinora.shots[]:镜头——target.kind 区分 objects(跟随)与 region/rect(固定取景)
  • shots[].steps[]:步骤——actions[] 各含 targetId + 动作参数
  • shots[].entryStep.entries[]:第 0 步
  • kinora.stage.aspect:画幅
  • kinora.media / audio / assets / fonts / grid:其余资源与设置

tldraw 快照格式:snapshot.store 里是全部 shape 记录(id 如 shape:xxxx)。步骤的 targetId 就指这里的 shape id。

打开一个损坏的工程:先整段校验,拒绝时给 invalid-snapshot + 逐条 issues;能读但部分记录不合法时正常打开,并 toast 列出 N 条记录无法解析(前 3 条)。找不到素材给「assets/ 中找不到:…」清单。

「工程文件」在直觉上是一个文件,这里是一个目录——但目录更诚实:素材不再藏在二进制里,拷走即完整。需要单文件交换的人会觉得麻烦,建议后续提供「导出 .kinora.zip」。