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
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
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
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**
(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**
/ **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
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
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
@@ -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,
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
frames about the pointer, `Shift`+wheel scrolls, the middle button (or `Shift`+drag) pans, **Fit**
returns to frame 0 at the default zoom. Rows are not collapsed or reordered.
frames about the pointer, `Shift`+wheel scrolls, the middle button (or `Shift`+drag) pans. Rows are not collapsed or reordered.
**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