移植动画代码
KineticKit 是全新而且独立的引擎。它不会导入 MosaicKit 或任何 *-viz 软件包,也没有兼容层。移植时,通过一个小适配器,把你的对象描述成 KineticKit 节点。已移除的 MosaicKit 与 utility-viz 动画 API 不会被重新导出。
从参数扫描移植
MosaicKit 的 Animation.sweep(canvas, values) 会产生不可变的场景帧。把每个图层描绘成以图层编号为键的 KineticKit 节点,再交给 KineticKit 在帧之间插值。
- 替每个来源图层指定稳定的编号。
- 写一个描绘函数,把一个图层转成节点。
- 用
kinetickit.adapters.transition把相邻的帧转成转场,并用then()接起它们的动作。 - 用
Animation.save()导出。
from kinetickit import Animation
from kinetickit.adapters import transition
def depict(layer): # 只使用 MosaicKit 的公开字段
... # PathLayer -> PathNode2D(id=layer.id, ...),依此类推
frames = list(sweep.frames())
steps = [transition(a.layers, b.layers, depict, duration=1.0) for a, b in zip(frames, frames[1:])]
motion = steps[0].motion
for step in steps[1:]:
motion = motion.then(step.motion)
animation = Animation(steps[0].scene, motion)
transition(before, after, adapter, **options) → Transition
第一个状态的对象。
第二个状态的对象。
你的描绘函数。
时间选项,例如 duration。
依编号配对两个状态的节点,返回把前者带到后者的场景与动作。
图层的编号在各帧之间必须保持不变。没有配对到的编号会淡入或淡出,结构改变则会交叉淡化,并把诊断消息放在 Transition.diagnostics。适配器应该放在使用端的软件包里,因为只有那里懂得领域对象。
从工厂式动画器移植
用描绘函数取代工厂,直接创建动画。
- 用
adapt(objects, depict)把每个领域对象转成节点。 - 用
node.animate.<属性>.to(...)或SceneTransition.between()表达变化。 - 用
animation.save(path)导出。文件路径、帧率、DPI 与替代方案都由导出器负责。
字体
把特定绘图端的字体路径,换成由调用端持有的 FontSource 与 FontLibrary,并通过 GlyphKitTypography 转换排版结果(参见文本排版)。不要让场景模型或选用的绘图端去寻找字体。
现有使用 Text2D、TextAsset、GlyphShape、FontResource 与排版协定的程序,契约不变。