mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-14 19:27:05 -04:00
Quick Offset: layer.quickOffset and keys.quickOffset commands (#1012)
After Effects 25.4's Quick Offset staggers selected layers, or each
layer's selected keyframes, in the order they were selected: the first
stays, the last moves by the drag and the ones between by equal steps,
landing on subframes.
layer.quickOffset {delta, layers?} moves each layer's start, in and out
point by total * i / (n - 1), worked out once in ticks with integer
arithmetic, so 1 frame over 4 layers gives 0, 1/3, 2/3 and 1 frame
exactly. keys.quickOffset {delta} does the same per layer for the
selected keys, the layers in the order their first key was selected;
every selected key of a layer, across its properties, moves by that
layer's comp-time offset through its start and stretch (reversed too),
keeping values, interpolation, easing and labels. Locked layers are
skipped and at least two layers are needed. With merge and fromStart,
delta is the whole drag and each step starts again from before it, so
the drag is one undo step and a key passed over survives. A delta or a
destination out of the range of times is an error, not a clamped move.
Docs: agents.md; architecture.md notes Quick Offset as the exception to
times snapping to frames.
This commit is contained in:
1 parent
7643f803e0
commit
28e9e5229e
6 files changed
+410
-2
No files matched your search
+5
-1
@@ -248,7 +248,11 @@ build real projects through these interfaces; they are worked examples of everyt
|
||||
/ `selectPrevious` / `selectFollowing`, `keys.move {delta, merge}` (steps sharing a merge key are
|
||||
one drag: each applies to the keys as they were before it, so a key passed over survives) and
|
||||
`keys.transform {…, merge, fromStart: true}` (values are the whole transform since the drag
|
||||
started). Keys of locked layers can't be selected. Copy / paste: `keys.copy`, then `keys.paste`
|
||||
started). **Quick Offset** (Ctrl/Cmd+Alt drag in the Timeline): `layer.quickOffset {delta,
|
||||
layers?}` and `keys.quickOffset {delta}` stagger the selected layers, or each layer's selected
|
||||
keys together, in selection order: the first stays, the last moves by `delta` (comp seconds) and
|
||||
the ones between by equal steps, onto subframes; `merge` + `fromStart: true` make `delta` the whole
|
||||
drag. Keys of locked layers can't be selected. Copy / paste: `keys.copy`, then `keys.paste`
|
||||
at the current time (keys copied from several layers go to as many selected layers in order).
|
||||
`time.nextKey` / `time.previousKey` / `keys.selectAll` take `visible: [{layer, prop}]` to act
|
||||
only on those properties (the Timeline passes its revealed ones, as J / K and Ctrl+Alt+A do).
|
||||
|
||||
@@ -72,7 +72,9 @@ All time is an integer `Tick`, 254 016 000 000 per second, the least common mult
|
||||
broadcast frame rate (×1001) and audio sample rate, so frame and sample positions are exact.
|
||||
Keyframe times are in **layer time**; `layer_time = (comp_time - start_time) / stretch`, and a
|
||||
Time Remap property overrides the source time. Commands snap layer times, keyframe times and
|
||||
comp durations to whole frames, as After Effects does. Timecode is only a display.
|
||||
comp durations to whole frames, as After Effects does, except Quick Offset (`layer.quickOffset`,
|
||||
`keys.quickOffset`), which staggers layers and keys onto subframes, as After Effects 25.4 does.
|
||||
Timecode is only a display.
|
||||
|
||||
## 3. Document model
|
||||
|
||||
|
||||
Reference in new issue
Block a user