• Stars
    star
    682
  • Rank 63,953 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

simple javascript timeline library for animation and prototyping

Timeliner

Timeliner is a graphical graphical tool to help create and prototype animations quickly. It is useful for adjusting variables and checking out how the effects changes over time with keyframing and easing/tweening functions. It may also have some similarities with the timeline component of adobe flash, after effects, edge animate or other animation software.

It is written in javascript and meant to work with different javascript libraries or webgl frameworks, in 1d, 2d, or 3d. It is built primary for myself, but feel free to send me suggestions or requests.

Follow me on twitter for updates.

Demo

Example

Video

screenshot

Another js timeline library?

Below are some existing javascript timeline libraries which I think are pretty good. I decided to write mine partly to scratch my itch and partly to challenge myself technically. There are challenges in writing one, but its nice to be in control of your own tools.

  1. Timeline.js by Marcin Ignac
  2. Keytime Editor by Matt DesLauriers
  3. Frame.js by Ricardo Cabello (Side note: mrdoob's talk on this also showcase interesting editors used by the demoscene)
  4. TweenTime by idflood.

I think the current version is much a work in progress. However Ben Schwarz says that a cat dies everytime code doesn't get publish during cssconf asia 2014, so I thought it would be a good idea to release this early.

Philosophy

I wrote Timeliner to be as lightweight and embedable as possible. Styles, HTML, icons are all embeded in a single javascript file. This means it could work as an included script, bookmarklet, or part of a bigger project. I intent to have interoperablility with other controls tools like dat.gui or gui.js.

Usage

Include the timeliner.js file.

<script src="timeliner.js"></script>

or import via ES modules

import { Timeliner } from './build/timeliner.min.js'

Load data by code, file upload or loading from saved localStorage.

// target is a "pojo" which gets updated when values change.
var target = {
	name1: 1,
	name2: 2,
	name3: 3
};

// initialize timeliner
var timeliner = new Timeliner(target);
timeliner.addLayer('name1');
timeliner.addLayer('name2');
timeliner.addLayer('name3');

Add a keyframe

  1. double click on the timeline

or

  1. Select a time on the timeline
  2. Click on the keyframe

Add a tween

  1. Select time between 2 keyframes
  2. Select easing type from the dropdown

Development

To test without compiling, open test_module.html in the browser.

Format code

yarn run fix

Generate Build

yarn run mini

Releases

2.0.0

  • Refactored using ES modules

1.5.0

  • Fix package.json dependencies
  • Easy way to move keyframes (reimplemented block dragging)
  • Time scale and styling improvements thanks @tschw

1.4.0

  • Bug fix (insert keyframes should interpolate)
  • ghosting / onioning skinning tweened values
  • Icon and layout tweaks
  • Basic time & vertical scrolling
  • Simple Ghosting / Onion Skinning Support Example

1.3.0

  • autosave
  • load (localstorage, new, autosave, filesystem)
  • save (export, localstorage, download)
  • ui tweaks

1.2.0

  • icons using extracted fontawesome data
  • slightly npm-ify
  • window management
  • basic keyboard shortcuts
  • basic hdpi
  • basic touch support

1.1.0

  • undo / redo (basic)

1.0.0

  • slider time scale (basic)
  • fix positioning mouse events
  • basic play toggled with pause button
  • basic hook playback to target object
  • basic playback and pause
  • semi-allow layer panel to repaint on data change
  • show current easing of layers
  • update tween props on insert
  • show tween values on cursor movement
  • edit tween (basic)
  • insert tween (basic)
  • drag keyframe
  • insert keyframe on value adjust
  • adjust value
  • remove keyframe
  • insert keyframe
  • adjust values (basic)

TODO

  • slider units
  • usability improvements
  • better marking time when scaling time
  • better keyboard shortcuts
  • move tween blocks
  • custom context / popup menu
  • attempt virtual-dom / v.rendering
  • consider immutable js or localstorage for undo stack
  • curve editor
  • graph editor
  • support audio
  • support guestures
  • remote control
  • a whole ton more

More Repositories

1

space-radar

Disk And Memory Space Visualization App built with Electron & d3.js
JavaScript
1,363
star
2

sparks.js

a lightweight 3d particle engine in javascript, compatible with THREE.js and TWEEN.js
JavaScript
431
star
3

kafka-streams-viz

Kafka Streams Topology Sketch Diagram Visualization
JavaScript
394
star
4

threejs-path-flow

๐Ÿฌ๐ŸŸ โ†ถMesh Deformation / Bending / Following on a Curve
JavaScript
290
star
5

FractalLab

WebGL interactive fractal renderer
JavaScript
180
star
6

crayon.js

Node-based Shader Library for Three.js
92
star
7

wild-web-midi

Wild Web Midi - quality Midi playback with JS in your browser (emscripten port of Wild Midi)
C
72
star
8

threejs-term

Terminal Renderer for Three.js
JavaScript
70
star
9

mrdoobapproves

does mrdoob approve?
JavaScript
63
star
10

audiokeys.js

javascript spectrum for HTML5 audio
JavaScript
50
star
11

zz85-bookmarklets

my collections of bookmarklets
JavaScript
33
star
12

contact.js

multi-touch and sensor beaming via websockets
JavaScript
31
star
13

lightbroom

because photos should be swept fast
JavaScript
30
star
14

ThreeLabs

Experiments with Three.js that may or may not make it back into the library.
JavaScript
28
star
15

3ource

browser based git source visualization with three.js
JavaScript
26
star
16

profile-bee

๐Ÿ๐Ÿฆ€๐Ÿ”ฅ An ebpf based CPU profiler written in Rust
JavaScript
21
star
17

nwc-viewer

๐ŸŽผ๐ŸŽน๐ŸŽถโ™ญโ™ฎโ™ฏโ™ฌ open source noteworthy composer music notation viewer & player
JavaScript
19
star
18

ascii-graphs.js

Ascii visualizations
JavaScript
18
star
19

keyboard.js

Virtual Keyboard Experiments
HTML
17
star
20

electron-awesomeness

Electron App to help manage Electron Apps
HTML
17
star
21

fast-rectangles

Different and fast approaches to rendering rectangles in your browser
HTML
16
star
22

phonopaper.js

JS Version of PhonoPaper
JavaScript
16
star
23

DragSpline

A Click and Drag Visual Shape Editor for Game Design
JavaScript
16
star
24

cubic-bezier-approximations

Cubic Bezier Approximations for Robert Penner Easing Equations
JavaScript
16
star
25

chop-chop-video

Video Editing Experiments with JS
JavaScript
15
star
26

js1k-tools

toolkit for js1k
JavaScript
13
star
27

RenderFlies

RenderFlies is a distributed video render system using web browsers and node.js
JavaScript
13
star
28

glsl-cleaner

Parse, Analyse, Clean GLSL code in JS
JavaScript
12
star
29

do.js

Minimalistic Event Dispatcher
JavaScript
7
star
30

bummerman

Remake Bomberman in JS and 3D
JavaScript
7
star
31

packet_radar

Realtime Network Analysis and Visualization
Rust
7
star
32

photocurves

Photo / Color Curves Adjustments
JavaScript
6
star
33

shoeprint

Simple, Useful Poor Man's Network Swiss knife of traceroute, ping, mtr and whois
JavaScript
6
star
34

campjs-livecode

Live Code Editor created on route to CampJS
JavaScript
5
star
35

nwc2ly.py

A Noteworthy Composer importer for Lilypond in Python
Python
4
star
36

drone.js

JS / WebGL / WebVR Drone Simulator
JavaScript
4
star
37

node-ws-slow-client-buffer-leak

Testing Tool to Identify RSS buffer leaks from Slow Clients
JavaScript
3
star
38

node-diarrhoea

fluid, fast, simple library for making ipc calls over uds on node.js
JavaScript
2
star
39

bezierlights

Lights up with Bezier Curves
JavaScript
2
star
40

zz85.github.io

2
star
41

flowlab

2
star
42

airport-maps-experiment

HTML
2
star
43

a-boid-ballet

ballet of boids
JavaScript
2
star
44

midiviz

some simple music visualizations
HTML
2
star
45

quic-initial-degreaser

Clean up greasy Chromium Initial QUIC packets
Rust
2
star
46

about

about things i'm doing?
1
star
47

fluidsynth-emscripten

Attempt to make Fluidsynth run in JS / Browsers with emscripten
C
1
star
48

tcc-trace

a TCP Congestion Control Tracing Tool
Rust
1
star
49

random-sketches

random sketches i make with js
HTML
1
star