Animations: ping-pong turns on the last key; Fit frames the preview (#112, #111)

admin committed 2026-09-17 07:12:22 +02:00
1 parent f0255f2ccc
commit 5113c10be7
1 file changed
+6 -5
+6 -5
@@ -15,7 +15,9 @@ Its two properties are **Frames per second** (default 10) and **Playback**: *Loo
(ends on the last value and leaves it), *Once (reset)* (ends and puts back what every target held (ends on the last value and leaves it), *Once (reset)* (ends and puts back what every target held
before the start) or *Ping-pong*. The last key over all rows decides how long one pass lasts — the before the start) or *Ping-pong*. The last key over all rows decides how long one pass lasts — the
last key's frame counts as a frame of its own, so keys on 0…9 last one second at 10 fps. A pause at last key's frame counts as a frame of its own, so keys on 0…9 last one second at 10 fps. A pause at
the end is a last key that repeats the value. Between two keys the playhead runs on every tick, the end is a last key that repeats the value. *Ping-pong* turns on the last key, so neither end
plays twice: frames keyed on 0…9 play 0…9…1 and start over, eighteen frames a bounce. On the way
back a value that jumps holds the key the playhead passed last, the one above it. Between two keys the playhead runs on every tick,
not only on whole frames: at 10 fps a moving `x` moves each frame, the fps only sets how far apart not only on whole frames: at 10 fps a moving `x` moves each frame, the fps only sets how far apart
the keys are in time. the keys are in time.
@@ -32,9 +34,9 @@ and property cannot be keyed twice on one animation.
**The Animation tab.** The header picks the animation, what it **animates** (the root), **+ Row** **The Animation tab.** The header picks the animation, what it **animates** (the root), **+ Row**
(a dialog: the root or one of its objects, then a property of that; the inspector's (a dialog: the root or one of its objects, then a property of that; the inspector's
*Change target…* reopens it to move a row's keys to another property of the same kind), **Play** *Change target…* reopens it to move a row's keys to another property of the same kind), **Play**
/ **Pause** and **Centre**. Below the header the **preview** shows the root at the playhead, drawn / **Pause** and **Fit**. Below the header the **preview** shows the root at the playhead, drawn
like the Scene tab draws a scene but never edited — a drag pans, the wheel zooms about the like the Scene tab draws a scene but never edited — a drag pans, the wheel zooms about the
pointer, *Centre* frames the content again. It is built from a copy of the root with every row's pointer, *Fit* frames the content again. It is built from a copy of the root with every row's
value at the playhead written over it, so the document stays untouched and undo never hears of value at the playhead written over it, so the document stays untouched and undo never hears of
scrubbing; past the end of a *Once (reset)* pass it shows the starting values, as the player scrubbing; past the end of a *Once (reset)* pass it shows the starting values, as the player
would. Under the preview lies the **timeline**: a row per target and property, a frame ruler on would. Under the preview lies the **timeline**: a row per target and property, a frame ruler on
@@ -42,8 +44,7 @@ top. **Double-click** a cell to set a key with the value that holds there (then
the inspector while the key is selected); click a key to pick it, drag a band to pick several, the inspector while the key is selected); click a key to pick it, drag a band to pick several,
drag keys to move them (one landing on another replaces it), `Delete` removes the picked keys — drag keys to move them (one landing on another replaces it), `Delete` removes the picked keys —
or the whole row when its header is picked. Click or drag the ruler to scrub. The wheel zooms the or the whole row when its header is picked. Click or drag the ruler to scrub. The wheel zooms the
frames about the pointer, `Shift`+wheel scrolls, the middle button (or `Shift`+drag) pans, **Fit** frames about the pointer, `Shift`+wheel scrolls, the middle button (or `Shift`+drag) pans. Rows are not collapsed or reordered.
returns to frame 0 at the default zoom. Rows are not collapsed or reordered.
**Play, stop, pause.** `Play animation` starts an animation on an object (both are ports: the **Play, stop, pause.** `Play animation` starts an animation on an object (both are ports: the
object as any action takes it, the animation from an *Animation* literal, a list item tagged object as any action takes it, the animation from an *Animation* literal, a list item tagged