Videos, Animations: key a video to its end at 1x, zoom out more (#407)

- Videos: the context menu entry "Video at 1x to its end from frame N"
  and what it keys.
- Animations: the entry in the context menu, and the wheel zooms out
  to 50 frames a pixel.
- Development: 2000 checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adminandClaude Opus 5.5 committed 2026-10-11 14:51:38 +02:00
1 parent 912ba7bb9e
commit b14b657f4b
3 files changed
+14 -3

No files matched your search

+4 -2
@@ -114,8 +114,10 @@ out. A pasted key replaces one on its frame. **Right-click** the timeline for *C
*Insert frames…* and *Remove frames…*: both ask for a count and work at the playhead over every
row — inserting moves every key from the playhead's frame on later, removing drops the keys in
the removed frames and pulls the rest earlier. Each is one undo step. The same menu has
*Delete row* for the row under the pointer; right-clicking a row's header also picks that row. 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. Rows are not collapsed or reordered.
*Delete row* for the row under the pointer; right-clicking a row's header also picks that row. On a
*Video time* row it also offers to key the video at 1x to its end (see [Videos](Videos)). Click or drag the ruler to scrub. The wheel zooms the
frames about the pointer, from 48 pixels a frame out to 50 frames a pixel, so an hour at 30 fps
fits a screen (#407). `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
+1 -1
@@ -21,7 +21,7 @@ php tests/php/releases.test.php # the release stor
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
php tests/php/videos.test.php # the video store, its queue and the worker (#402), with the
# real ffmpeg: the CI image and game-maker-video have it
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1999 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 2000 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
+9
@@ -97,6 +97,15 @@ What the keys on Video time do:
| a flatter or a steeper line | slow motion or fast motion |
| an easing or a curve | ramps |
**1x to the end without arithmetic.** Right-click the timeline on the Video time row and pick
*Video at 1x to its end from frame N* (#407). From the playhead, with the value the row has there
(0 on an empty row), it keys the last whole frame before the clip ends: a 57.27 s clip at 10 fps
from frame 0 ends on frame 572 at 57.2 s, the rest of a frame is left out. The first key turns
linear, keys between the two go, and it is one undo step. The clip is the one the sprite wears at
the playhead, a keyed Texture included. The entry is greyed out on a relative row, without a video,
while the video's length is not known yet, or when the playhead already stands at the end. A
notice names the frame, the time and the clip's length.
Past the end of its clip the time goes round with Loop and holds the last picture without; before
0 it shows the first one. A cut is then: clip A and clip B each on a sprite, **Enabled** keyed to
switch between them, Video time keyed on each, texts above, transitions over Alpha, Color or a