Animate once, tile the rest

A repeater copies one keyed move along the same layer, so you don’t rebuild the same keys over and over.

Use this to:

  • Loop a cycle for the rest of the timeline
  • Keep traveling farther on each play
  • Clear twenty near-identical layers back to one

This stays on one layer. To offset many separate layers, use stagger.

Cycle a move

  1. Select the layer and open the property you already animated.
  2. On that row, open the repeater menu and choose Cycle.
  3. Drag the start and end handles around the move you want to repeat.
  4. Drag the tile-until handle to set how far the copies run.

Each extra play starts again from the first key. Keys outside the span stay visible but don’t play. Set the menu to none to turn the repeater off. Your original keys stay, and the parked keys come back.

Offset

Offset keeps adding the same change instead of restarting. A move from 0 to 100, played three times, becomes 0→100, then 100→200, then 200→300.

Offset is available on position, rotation, scale, skew, opacity, stroke width, and dash offset. Color, origin, and dash pattern keep cycling even when the rest offsets.

Tip: For a loop that should reverse instead of restart, use Pingpong.

Script console and WebMCP

The same steps run in Edit → Scripting and through WebMCP. Agents run a script with pureanim_run_script or window.pureanim.run().

WebMCP tools:

  • pureanim_get_state
  • pureanim_list_commands
  • pureanim_run_script
  • pureanim_set_time
api.setRepeaterMode({ layer, mode, prop });
api.setRepeaterSegment({ layer, start, end, tileUntil, prop });
api.setRepeaterTileUntil({ layer, tileUntil, prop });
api.clearRepeater({ layer, prop });
api.getRepeater({ layer, prop });

mode can be "none", "cycle", "pingpong", "pingpong-travel", or "offset". Omit prop for the whole layer. Change the original span — generated copies aren’t editable.

Full command reference: scripting.md. Agent loop: agents.md.