转换与 Drag Conversion¶
OSA 里的每一行都是同一个对象,但不是每一行都被允许做同样的事 —— 因为 Harmony 自己的模型有一些它并不具备的形状。本页讲的就是这些限制、Inspector 如何显示它们,以及你怎么从中脱身。
Inspector 会变形¶
选中一个 frame、一个 art layer 或一个 subart layer,Inspector 的大部分内容会消失:
| 区块 | drawing 容器 | Frame | art layer / subart | Frames 文件夹 | Template |
|---|---|---|---|---|---|
| Item Properties | ✅ | ✅ | ✅ | 名称锁定 | 名称锁定 |
| Content Nodes | ✅ 完整 | ✅ 仅画稿字段 | ✅ 仅画稿字段 | ❌ | ❌ |
| Hierarchy Nodes | ✅ | ❌ | ❌ | ❌ | ❌ |
| Effects Nodes | ✅ | ❌ | ❌ | ❌ | ❌ |
没有任何东西被置灰后留在那里逗你 —— 它是隐藏的,因为那根本不是这一行会有的设置。
为什么: 一个 frame 是元素内部一个已曝光的 cel。cel 上没有 peg,cel 上没有 composite,cel 上没有辉光。peg 属于 frame 上方的 drawing 节点;那才是这些区块所在的行,也是你去设置它们的行。
再往下一层也一样:art layer 是 drawing 内部的一个层,subart layer 是那一层堆叠中的一张图。两者都不是 Node View 里的节点,所以两者都没有节点属性。
是隐藏,不是禁用
一个被禁用的控件在说 "你本可以拥有它,只是现在不行"。这些区块是隐藏的,因为答案是 "在这种行上,永远不会有" —— 而 OSA 的规矩是:一个说不出理由的灰控件就是 bug,所以它不会把自己解释不了的东西置灰。
每种行能容纳什么¶
父子规则在每次放置时都会执行,而拒绝总会自报家门:
| 子项 | 允许的父级 | 你会看到的拒绝信息 |
|---|---|---|
| Frame | Frames 文件夹 | Frames must be in a Frames Folder |
| Frame 里的 Frame | — | BLOCKER: Frame inside Frame (Must be ArtLayer) |
| Frames 文件夹 | 一个 drawing 容器 | Frames Folder must be a child of a Drawing Container |
| Art layer | 一个 frame | Art Layers must be children of a Frame |
| Subart layer | 一个 art layer 或另一个 subart | Sub-ArtLayers must be children of an ArtLayer |
| drawing 容器 | 任何地方,除了 frame、art layer 或 Frames 文件夹内部 | Drawings cannot be inside Frames/Content nodes |
| Peg / Group / Composite / Backdrop | 任何地方,除了内容节点内部 | … cannot be inside content nodes |
Template(.tpl) |
除 frame 和 art layer 外的任何地方 | TPL Files cannot be inside Frames or Art Layers |
释放一个 frame¶
frame 是一种被锁死的行:没有 peg,没有效果,它的子级只能是 art layer。当你需要它不止于此时,就把它变回一张 drawing。
在 Inspector 里取消勾选 Frame。会发生的事:
- frame 的编号被记住(
Start、End、编号),这样再次勾上 Frame 就能原样恢复。 - 该行变成一个 drawing 容器 —— Hierarchy Nodes 和 Effects Nodes 重新出现。
- 在它内部创建一个 Frames 文件夹。
- 它原有的任何 art layer 或 subart layer 都会被移进那个 Frames 文件夹。
最后一步才是有意思的那一步,也是 "我怎么把画稿变成帧?" 的答案:
把一个 frame 转换成 drawing,就是释放它的画稿去成为帧。
原本锁在 frame 里的那些 art layer,现在坐在一个 Frames 文件夹里,而那正是 frame 该待的地方。从那儿起,每一个都能自成一帧。
再次勾上 Frame,反向过程发生:Frames 文件夹被移除,它的子级上移回来,记住的编号也回来了。
art layer → frame,以及随之而来的提升¶
在一个 art layer 上取消勾选 Target Layer,它就转换成一个 frame:
- art-layer 类型被清空。
- 该行取用下一个可用的帧号 —— 不与已有曝光冲突。
- 它的 subart layer 被提升为 art layer,继承父级原有的类型。
第三步值得记住。subart layer 的定义是 "一个 art layer 堆叠中的一张图" —— 一旦它的父级不再是 art layer,这个描述就没有意义了。所以子级自己变成 art layer,并保留父级原本带着的类型,递归地一路往下。
整件事的反向操作:在 Drag Conversion 打开的情况下,把一个 frame 放到另一个 frame 或一个 art layer 上,它就重新变成 art layer —— 恢复它之前的类型,如果它从来没有过,就用 LA。
类型是被暂存了,不是丢了
当一次转换丢下一个 art-layer 类型时,OSA 会把它留着。转换回去时回来的是原来的层,而不是所有东西都塌成 Line Art。
Drag Conversion¶
Browser 的 Settings 区域里的 Drag Conversion 复选框决定一次放置意味着什么。它默认是关闭的。
-
关闭 —— 严格模式
一次无效的放置会被拒绝,而消息会点名那个可以允许它的复选框:
Strict Mode: Cannot nest Frames. Enable 'Allow Drag Conversion'.
你的树里永远只包含你要求过的形状。
-
打开 —— 转换
被放下的行变成目标所要求的样子,而 OSA 会说出它做了什么:
Converted ArtLayer to Frame
很快,而且是重构一棵到货就不对的树的最快办法。
什么会转换成什么¶
| 拖动 | 放到 | Drag Conversion 打开时 |
|---|---|---|
| art layer / subart | 一个 Frames 文件夹或一个 drawing 容器 | 变成一个 frame,取下一个空闲编号,它的 subart layer 被提升为 art layer |
| Frame | 另一个 frame 或一个 art layer | 变成一个 art layer,恢复它暂存的类型(或 LA) |
两种模式都会拒绝的¶
有两种放置无论复选框怎么设都无效,因为没有任何合理的东西可以让它们转换成:
- 一个 frame 放进一个 subart layer,
- 一个 art layer 放进一个 subart layer。
选择一种模式¶
| 什么时候用严格模式 | 什么时候用转换模式 |
|---|---|
| 你在摆放画稿,希望错误被拒绝 | 你在重构一棵到货就不对的树 |
| 树的形状已经是对的 | 你想让一次放置意味着"变成这个" |
| 你在一棵很深的树里快速操作 | 你在 frame 之间重新组织 art layer |
对你的画稿来说两者都是安全的:不会因为层级变了就丢掉任何东西。变的只是一次不寻常的放置到底是拒绝还是转换。
哪些行持有画稿,见 概念;不靠拖拽就能重构的那些动词,见 Split 与 Merge。
