Open app
Contents Motion

These docs follow the latest development version of vDesign.

Motion

Motion is how Play gets to a page, never what the page is. Write every page as it looks when finished; motion says how a presenter arrives there. Only Play reads it: the canvas always shows the finished page, and no export carries motion — a PDF prints each page as drawn.

Add motion when the person is making something to present or to click through, and keep it light. A transition per page and a reveal or two is a talk; everything flying in is noise.

Where it goes

After the last page, one block per page that has any:

motion intro enter=fade
  intro.title enter=rise
  intro.chart enter=fade step
  intro.note enter=fade together
  intro.cta enter=pop go=#pricing

motion pricing enter=push duration=600
  pricing.back go=back

A header names a page — a top-level frame — and says how Play arrives on it. Each line under it names a node on that page and says what the node does. Never copy a page to animate between the copies: each page is written once.

The header

motion <page> [enter=…] [duration=…] [scroll]

enterPlay arrives on the page by…
cutnothing at all — the default
fadefading in over the page before
pushpushing the page before out, sideways
slidesliding in over the page before, which stays put

You never write a direction. Going forward runs the new page’s enter; going back runs the leaving page’s enter in reverse.

scroll: a page taller than a screen

Play fits each page whole into the window, which shrinks a long web page to a thin strip. scroll fits the page to the window’s width instead, and the presenter scrolls it — wheel, trackpad, Space, Page Down, ↓ — the way a browser shows a page. At the bottom the same key goes on to the next page; → still goes there at once. A header with only scroll is a whole block:

motion home scroll

Give it to a web page, a landing page or a long article taller than one screen. Leave it off slides, posters and phone screens, which are meant to be seen whole. A go=#pricing to a frame inside a page that scrolls lands with that frame at the top of the window. The canvas and every export are unchanged: they show the whole page.

A line

<node> [enter=…|exit=…] [duration=…] [delay=…] [step|together] [go=…]

Effects, for enter and for exit:

effectenteringleaving
cutappears at oncevanishes at once
fadefades infades out
riserises from a little belowrises away
dropdrops from a little abovedrops away
popgrows in from slightly smallershrinks away

A node that enters is hidden when Play arrives on its page, until its turn; one that exits is gone after its turn. A node may have one enter line and one exit line — two lines, never both on one.

Order. Lines build in the order written, each starting when the one above finishes, unless it says:

  • together — start with the line above;
  • step — wait for the presenter to press → or click. What follows runs by itself up to the next step.

delay=300 waits that long after the line would otherwise start.

Time is milliseconds, as a plain number: duration=600, never 600ms or 0.6s. The default is 400 and the most is 10000.

Buttons: go=

Any line can say where a click on its node goes in Play. A click anywhere inside the node counts, so put go= on the group or frame that is the button, not on its label.

  • go=#pricing — that page. A frame inside a page goes to its page.
  • go=back — wherever the presenter came from.
  • go=next — the next page, whatever is left to reveal on this one.
  • go=https://… or go=mailto:… — only a link the person gave you.

A button can animate as well: intro.cta enter=pop go=#pricing. A go= works only in Play. A link that should also work in an exported PDF is a text run’s link= (see nodes).

Editing motion

A patch replaces a page’s whole block: write motion <page>, its header (scroll included), and every line as it should end up. A bare motion <page> clears it.

motion intro enter=fade
  intro.title enter=rise
  intro.chart enter=fade step

Deleting a node removes its lines, and moving it to another page takes them along. The vd_read outline ends with the pages that have motion; mode: "full" shows the lines.

What is checked

An error refuses the write: an effect that does not exist, a unit on a time, enter and exit on one line, step with together, a line that says nothing, a second enter, exit or go for one node, or a line naming the page itself. In a patch, naming a node that is not on the page is an error too.

A warning keeps the line, and Play skips it: in a whole document, a node that is not there, a node on another page, a header that is not a page, or a go=# to no frame.