Ascii.Pieces.Scramble (Ascii v0.3.0)

Copy Markdown View Source

Phrases decoding left to right out of flickering glyphs.

A decode effect. Each phrase breaks into flickering glyphs from the left, and the next one settles out of them a letter at a time. Give it your own phrases: a login's "access granted", a rotating tagline.

Options

Give them to Ascii.new/2 as options:, and new ones while it plays with Ascii.put_options/2 (or a Phoenix player's options): it starts afresh on the new phrases.

  • phrases - the phrases, in turn, each centred on the middle row, held settled for about two seconds, and cut to 40 characters; after the last comes the first again. An empty list is a blank line. Default ["hello, world", "decoding the signal", "nothing is lost", "see you on the other side"].

The line is always 44 by 3.

Colours

It has no parts to colour one by one: in one ink, or a gradient, with :ink and :gradient (see Ascii.Ink). A horizontal gradient runs through the phrase and the glyphs alike.

Keys and clicks

It takes none: it decodes its phrases, and Ascii.handle_event/2 ignores every event. A Phoenix player given interactive and notify still tells your LiveView where it was clicked.

Screen readers

Ascii.describe/1 reads the phrases, four at most, their closing stops dropped: "scramble: access granted; welcome back". With none, it gives the piece's name and note.

Example

decode = Ascii.new!("scramble", options: %{phrases: ["access granted.", "welcome back"]}, ink: "#3fb950")
{frame, decode} = Ascii.frame(decode, 0.0)
frame.text =~ "access granted."
#=> true

Ascii.describe(decode)
#=> "scramble: access granted; welcome back"
<Ascii.Phoenix.live_player id="decode" piece="scramble" options={%{phrases: @phrases}} ink="#3fb950" />

Ported from src/pieces/scramble.ts in bas3line/ascii (MIT).